공부/DB8 [Spring DB](8) 스프링 트랜잭션 전파 트랜잭션 전파(Propagation)에 대해 알아보자. package hello.springtx.propagation; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.context.annotation.Bean; import org.springframe.. 2024. 2. 29. [Spring DB](7) 스프링 트랜잭션 스프링 트랜잭션을 더 깊이있게 파헤쳐보자. 스프링 트랜잭션 추상화 JDBC 기술을 사용하다가 JPA 기술로 변경하게 되면 트랜잭션을 사용하는 코드도 모두 변경해야한다. 이러한 문제를 해결하기 위해 트랜잭션 추상화를 통해 둘을 동일한 방식으로 사용할 수 있다. 스프링은 PlatformTransactionManager라는 인터페이스를 통해 트랜잭션을 추상화한다. 스프링은 트랜잭션을 추상화해서 제공할 뿐만 아니라, 실무에서 주로 사용하는 데이터 접근 기술에 대한 트랜잭션 매니저의 구현체도 제공한다. 개발자는 필요한 구현체를 스프링 빈으로 등록하고 주입받아서 사용하기만 하면 된 다. 여기에 더해서 스프링 부트는 어떤 데이터 접근 기술을 사용하는지를 자동으로 인식해서 적절한 트랜잭션 매니저를 선택해서 스프링 빈으.. 2024. 2. 29. [Spring DB](6) 데이터 접근 기술 - JPA & 스프링 데이터 JPA & Querydsl JPA에서 가장 중요한 부분은 객체와 테이블을 매핑하는 것이다. JPA가 제공하는 애노테이션을 사용해서 Item 객체와 테이블을 매핑해보자. Item package hello.itemservice.domain; import lombok.Data; import javax.persistence.*; @Data @Entity public class Item { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "item_name", length = 10) private String itemName; private Integer price; private Integer quantity; public Ite.. 2024. 2. 28. [Spring DB](5) 데이터 접근 기술 - MyBatis JdbcTemplate과 비교점은 MyBatis는 SQL을 XML에 편리하게 작성할 수 있고 동적 쿼리를 매우 편리하게 작성할 수 있다. MyBatis 적용 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 org.apache.ibatis.annotations.Param; import java.util.List; import java.. 2024. 2. 27. [Spring DB](4) 데이터 접근 기술 - JDBC 데이터 접근 기술 SQL Mapper : SQL만 작성하면 해당 SQL의 결과를 객체로 편리하게 매핑해준다. *JdbcTemplate *MyBatis ORM 관련 기술 : SQL을 직접 작성하지 않는다. 저장하고 싶은 객체를 마치 자바 컬렉션에 저장하고 조회하듯 사용하면 ORM 기술이 데이터베이스에 해당 객체를 저장하고 조회한다. *JPA, Hibernate *스프링 데이터 JPA *Querydsl Spring MVC 에서 개발한 상품 관리 프로젝트를 이용해 데이터 접근 기술을 학습해보겠다. domain/Item package hello.itemservice.domain; import lombok.Data; import javax.persistence.*; @Data @Entity public class.. 2024. 2. 27. [Spring DB](3) 자바 예외 *Exception : 체크 예외 **애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외 **Exception 과 그 하위 예외는 모두 컴파일러가 체크하는 체크 예외이다. RuntimeException 은 아니다. *RuntimeException : 언체크 예외, 런타임 예외 **컴파일러가 체크 하지 않는 언체크 예외이다. **RuntimeException 과 그 자식 예외는 모두 언체크 예외이다. **RuntimeException 의 이름을 따라서 RuntimeException 과 그 하위 언체크 예외를 런타임 예외라 고 많이 부른다. 체크 예외 체크 예외는 잡아서 처리하거나, 밖으로 던지도록 선언해야한다. 그렇지 않으면 컴파일 오류가 발생한다. package hello.jdbc.exceptio.. 2024. 2. 26. 이전 1 2 다음