스프링 트랜잭션 전파1
·
Spring
트랜잭션 전파 - 트랜잭션 두번 사용@Slf4j@SpringBootTestpublic class BasicTxTest { @Autowired PlatformTransactionManager txManager; @Autowired private DataSourceTransactionManager transactionManager; @TestConfiguration static class Config { @Bean public PlatformTransactionManager transactionManager(DataSource dataSource) { return new DataSourceTransactionManager(dataS..
스프링 트랜잭션 이해
·
Spring
스프링 트랜잭션 소개 (복습) 트랜잭션 추상화JDBC와 JPA는 트랜잭션을 사용하는 코드 자체가 다르기 때문에 스프링이 제공하는 트랜잭션추상화를 통해 동일한 방식으로 사용할 수 있다. PlatformTransactionManager//// Source code recreated from a .class file by IntelliJ IDEA// (powered by FernFlower decompiler)//package org.springframework.transaction;import org.springframework.lang.Nullable;public interface PlatformTransactionManager extends TransactionManager { Transaction..
데이터 접근 기술 - MyBatis
·
Spring
MyBatis는 JdbcTemplate보다 더 많은 기능을 제공하는 SQL Mapper이다.기본적으로 JdbcTemplate이 제공하는 대부분의 기능을 제공한다.SQL을 XML에 편리하게 작성할 수 있고 또 동적 쿼리를 매우 편리하게 작성할 수 있다는 장점이 있다. ItemMapper 인터페이스package hello.itemservice.repository.mybatis;import hello.itemservice.domain.Item;import hello.itemservice.repository.ItemSearchCond;import hello.itemservice.repository.ItemUpdateDto;import org.apache.ibatis.annotations.Mapper;import..
데이터 접근 기술 - 테스트
·
Spring
테스트 - 데이터베이스 연동데이터 접근 기술은 실제 데이터베이스에 접근해서 데이터를 잘 저장하고 조회할 수 있는지 확인하는것이 중요하다.테스트를 해보자 @SpringBootTestclass ItemRepositoryTest { @Autowired ItemRepository itemRepository; @AfterEach void afterEach() { //MemoryItemRepository 의 경우 제한적으로 사용 if (itemRepository instanceof MemoryItemRepository) { ((MemoryItemRepository) itemRepository).clearStore(); } } ..
데이터 접근 기술 - 스프링 JdbcTemplate
·
Spring
JdbcTemplate 적용1 - 기본JdbcTemplate을 사용해서 메모리에 저장하던 데이터를 DB에 저장해보자ItemRepository 인터페이스를 기반으로 jdbcTemplate을 사용하는 새로운 구현체를 개발해보자@Slf4jpublic class JdbcTemplateItemRepositoryV1 implements ItemRepository { private final JdbcTemplate template; public JdbcTemplateItemRepositoryV1(DataSource dataSource) { this.template = new JdbcTemplate(dataSource); } @Override public Item save(Ite..
스프링과 문제 해결 - 예외처리, 반복
·
Spring
체크 예외와 인터페이스서비스 계층은 특정 구현 기술에 의존하지 않고 순수하게 유지하는것이 좋다. 이렇게 하려면 예외에 대한 의존도 함께 해결해야 한다.서비스가 처리할 수 없는 SQLException에 대한 의존성을 제거하려면 이전에 배운것 처럼 런타임 예외로 전환해서 서비스 계층에 던지면 된다. 인터페이스 도입MemberRepository 인터페이스도 도입해서 구현 기술을 쉽게 변경할 수 있게 해보자package hello.jdbc.repository;import hello.jdbc.domain.Member;public interface MemberRepository { Member save(Member member); Member findById(String memberId); void..