jpa
-
고급 주제와 성능 최적화IT/JPA 2021. 2. 28. 19:32
1. 예외처리 1. JPA 표준 예외 정리 - JPA의 표준 예외는 Javax.persistence.PresistenceException 의 자식클래스 이며, RuntimeException 을 상속받는다. - JPA 표준 예외는 크게 트랜잭션 롤백을 표시하는 예외, 표시하지 않는 예외 2가지로 나눌 수 있다. - 트랜잭션 롤백을 표시하는 예외 : 심각한 예외이므로 복구해선 안된다. 트랜잭션을 강제 커밋해도 커밋되지 않고, javax.persistence.RollbackException 예외가 발생한다. - 트랜잭션 롤백을 표시하지 않는 예외 : 심각한 예외가 아니다. 개발자가 트랜잭션을 커밋할지 롤백할지 정하면 된다. 2. 스프링 프레임워크의 JPA 예외 변환 - 서비스 계층에서 데이터 접근 계층의 구현..
-
웹 애플리케이션과 영속성 관리IT/JPA 2021. 1. 24. 21:40
1. 트랜잭션 범위의 영속성 컨텍스트 1) 스프링 컨테이너의 기본전략 - 스프링 컨테이너는 트랜잭션 범위의 영속성 컨텍스트 전략을 기본으로 사용한다. - 트랜잭션을 시작할 때 영속성 컨텍스트를 생성하고, 트랜잭션이 끝날 때 영속성 컨텍스트를 종료한다. - 같은 트랜잭션 안에서는 항상 같은 영속성 컨텍스트에 접근한다. - 스프링 프레임워크에서는 보통 서비스 계층에 @Transactional 어노테이션을 선언한다. 호출한 메소드를 실행하기 직전에 스프링의 트랜잭션 AOP가 먼저 동작한다. - 스프링 트랜잭션 AOP는 대상 메소드를 호출하기 직전에 트랜잭션을 시작하고, 대상 메소드가 정상 종료되면 트랜잭션을 커밋하면서 종료한다. - 트랜잭션을 커밋하면 JPA는 먼저 영속성 컨텍스트를 플러시 해서 변경내용을 데..
-
값 타입IT/JPA 2020. 12. 29. 22:33
1. 값 타입 1) 값 타입의 분류 - 기본 값 타입 : 자바 기본타입(int, double..), 래퍼클래스(Integer), String - 임베디드 타입 : 복합 값 타입(사용자가 직접 정의한 값 타입) - 컬렉션 값 타입 : 한개 이상의 값 타입(List..) 2) 기본 값 타입 - 기본 값 타입은 생명주기가 회원 엔티티에 의존한다. - 값 타입은 공유해선 안된다. - 자바에서 int, double 같은 기본 값 타입은 절대 공유되지 않는다(a=b 코드에서 값만 복사됨) 3) 임베디드 값 타입 @Entity public class Member{ @Id @GeneratedValue private Long id; private String name; @Embeded Period workPeriod; ..
-
연관관계 매핑IT/JPA 2020. 12. 8. 21:25
1. 연관관계 1) 연관관계 - 방향 : 단방향, 양방향 이 있다. ex) 회원->팀(단방향), 회원->팀 팀->회원(양방향) - 다중성 : 다대일(N:1) 일대다(1:N), 일대일(1:1), 다대다(N:M) - 연관관계의 주인 : 객체를 양방향 연관관계로 만들면 연관관계의 주인을 정해야 한다. 2. 단방향 연관관계 * 연관관계 중에선 다대일(N:1) 단방향 관계를 가장 먼저 이해해야 한다. - 회원과 팀이 있다. - 회원은 하나의 팀에만 소속될 수 있다. - 회원과 팀은 다대일 관계다. * 객체 연관관계 - 회원 객체는 Member.team 필드로 팀 객체와 연관관계를 맺는다. - 회원 객체와 팀 객체는 단방향 관계다. Member.team 필드를 통해 팀을 알 수 있지만 팀은 회원을 알 수 없다. *..