JPA 적용3 - 예외 변환
2022. 8. 19. 00:58
데이터 접근 기술/JPA
JPA의 경우 예외가 발생하면 JPA 예외가 발생하게 된다. @Repository @Transactional public class JpaItemRepositoryV1 implements ItemRepository { private final EntityManager em; @Override public Item save(Item item) { em.persist(item); return item; } } ● EntityManager 는 순수한 JPA 기술이고, 스프링과는 관계가 없다. 따라서 엔티티 매니저는 예외가 발생하면 JPA 관련 예외를 발생시킨다. ● JPA는 PersistenceException 과 그 하위 예외를 발생시킨다. ● 추가로 JPA는 IllegalStateException , Il..
JPA 적용2 - 리포지토리 분석
2022. 8. 18. 22:53
데이터 접근 기술/JPA
JpaItemRepositoryV1 코드를 분석해보자. save() - 저장 public Item save(Item item) { em.persist(item); return item; } ● em.persist(item) : JPA에서 객체를 테이블에 저장할 때는 엔티티 매니저가 제공하는 persist() 메서드를 사용하면 된다. JPA가 만들어서 실행한 SQL insert into item (id, item_name, price, quantity) values (null, ?, ?, ?) 또는 insert into item (id, item_name, price, quantity) values (default, ?, ?, ?) 또는 insert into item (item_name, price, qu..
JPA 적용1 - 개발
2022. 8. 18. 15:19
데이터 접근 기술/JPA
JPA에서 가장 중요한 부분은 객체와 테이블을 매핑하는 것이다. JPA가 제공하는 애노테이션을 사용해서 Item 객체와 테이블을 매핑해보자 Item - ORM 매핑 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; pu..
JPA 설정
2022. 8. 18. 14:24
데이터 접근 기술/JPA
spring-boot-starter-data-jpa 라이브러리를 사용하면 JPA와 스프링 데이터 JPA를 스프링 부트와 통합하고, 설정도 아주 간단히 할 수 있다. spring-boot-starter-data-jpa 라이브러리를 사용해서 간단히 설정하는 방법을 알아보자. build.gradle 에 다음 의존 관계를 추가한다. //JPA, 스프링 데이터 JPA 추가 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' build.gradle 에 다음 의존 관계를 제거한다. //JdbcTemplate 추가 //implementation 'org.springframework.boot:spring-boot-starter-jdbc' spri..