JPA 사용 시 주의할 점 영속 상태 보장 JPA Entity는 영속상태인가, 아닌가에 따라서 동작 상 제한사항이 있을 수 있다. 예를 들면, 영속 상태의 entity는 delete가 가능하지만 비영속 상태의 entity는 불가능하다. 특정 로직을 수행하는 경우 영속 상태를 인지하고 있어야한다. @Transactional public void deleteQuestion(User loginUser, Question question) throws CannotDeleteException { if (question.isDeleted()) { throw new CannotDeleteException("이미 삭제된 질문입니다."); } if (!question.isOwner(loginUser)) { throw ne..
JPA
김영한 님의 자바 ORM 표준 JPA 프로그래밍을 읽고 정리한 내용입니다. 교보문고 링크 😀 다양한 연관관계 매핑 엔티티 연관관계 매핑 시 고려할 3가지 다중성 단방향/양방향 연관관계의 주인 1. 다중성 연관관계는 보통 4가지 다중성을 갖는다. 다대일 일대다 일대일 다대다 다대일, 일대다 관계를 많이 사용하며 다대다 관계는 거의 사용되지 않는다. 2. 단방향/양방향 테이블과는 달리 객체는 참조용 필드를 가지며, 그 필드를 통해 연관 객체를 조회한다. 한 쪽이 다른 한 쪽을 일방적으로 참조하면 단방향이며 서로 참조하면 양방향이다. 3. 연관관계의 주인 테이블은 외래키 하나로 두 테이블이 연관 관계를 가질 수 있기 때문에 연관관계를 관리하는 포인트는 외래키 하나이다. 엔티티가 양방향으로 참조되면 A → B,..
김영한 님의 자바 ORM 표준 JPA 프로그래밍을 읽고 정리한 내용입니다. 교보문고 링크 연관관계 매핑 기초 객체는 참조를 사용하여 연관 관계를 맺고 테이블은 외래 키를 사용해서 연관 관계를 맺는다. 관계가 있는 다른 데이터를 참조한다는 점에서 동일하지만, 참조와 외래 키는 완전히 다른 특징을 갖는다. 연관관계 매핑을 이해하기 위한 두 가지 키워드가 있다. 방향 : 회원/팀이라는 관계를 생각해본다. 단방향 : 회원 → 팀, 팀 → 회원 둘 중 한 쪽만 참조하는 관계 양방향 : 회원 → 팀, 팀 → 회원 둘이 서로를 참조하는 관계 다중성 1:1 (일대일) 1:N (일대다 혹은 다대일) N:M (다대다) 연관관계의 주인 : 양방향 연관관계를 만들 떄 연관 관계의 주인을 정해야 한다. 단방향 연관관계 가장 먼..
김영한 님의 자바 ORM 표준 JPA 프로그래밍을 읽고 정리한 내용입니다. 교보문고 링크 엔티티 매핑 JPA에서 실제 테이블에 연결하는 객체를 엔티티라고 부른다. 따라서 엔티티와 테이블을 정확히 매핑시켜 사용하는 것이 매우 중요하다. 아래는 매핑을 위한 대표적인 Annotation 목록이다. 객체와 테이블 매핑 @Entity @Table 기본 키 매핑 @Id 필드와 컬럼 매핑 @Column 연관관계 매핑 @ManyToOne @JoinColumn @Entity 테이블과 매핑할 클래스엔 @Entity가 반드시 붙어야 한다. 속성 name (Default : 클래스명) entity에 사용할 이름 엔티티 중복은 허용되지 않는다. entity의 이름과 테이블 이름은 다른 개념이다. 주의사항 기본 생성자는 반드시 ..