본문 바로가기

분류 전체보기89

5. 다양한 연관관계 매핑 1. 다대일 [N:1] 다(N)가 연관관계 주인인 경우 가장 많이 사용되는 연관관계 @ManyToOne + @JoinColumn 2. 일대다 [1:N] 일(1) 이 연관관계의 주인인 경우 @OneToMany + @JoinColumn (@JoinColumn 이 없으면 조인테이블 방식을 사용하게 된다.) 2.1. 일대다 단방향 객체 관점 아래의 그림을 보면, Team 에서 Member 로 가는 참조가 있다. 테이블 관점 FK 는 어쩔 수 없이 다(N) 쪽에 있다. 일전에 고려했던 넌센스한 문제가 생긴다. Team.members.add(member) 을 하면 Member 테이블에 있는 FK 가 변경된다. Team 객체에 변경을 가했는데, 데이터베이스 관점에서는 Member 테이블이 갱신되는 문제. 추가적으로 .. 2020. 12. 28.
4. 연관관계 매핑 기초 패러다임의 불일치 테이블은 외래키로 조인을 사용해서 연관된 테이블을 찾는다. 객체는 참조를 사용해서 연관된 객체를 찾는다. 1. 양방향 연관관계 단방향 양방향 패러다임의 불일치 테이블은, Foreign Key 한개만 있으면 양쪽으로 모두 조회가 가능하다. 객체는 양쪽에 모두 세팅해줘야 양쪽으로 모두 조회가 가능하다. 2. 연관관계 주인과 mappedBy 객체와 테이블이 관계를 맺는 차이 객체 = 연관관계 2개 = 단방향 연관관계 2개 회원 -> 팀 연관관계 1개 (단방향) 팀 -> 회원 연관관계 1개 (단방향) 테이블 = 연관관계 1개 회원 팀 연관관계 1개만으로, (양방향)을 모두 접근할 수 있음 객체의 양방향 관계는 사실, 서로 다른 단방향 관계 2개이다. 테이블은 하나의 외래키로, 양방향 연관관계를.. 2020. 12. 27.
3. 엔티티 매핑 1. 객체와 테이블 매핑 @Entity JPA 가 관리하는 객체이며, 데이터베이스 테이블과 매핑해서 사용한다. 기본 생성자 필수 (public / protected) final 클래스, enum, interface, inner 클래스 사용은 안된다. 저장할 필드에 final 사용은 안된다. 속성 name JPA에서 사용할 엔티티 이름 default 는 객체 명 @Table 속성 name 데이터베이스 테이블에 대한 이름을 지정한다. uniqueConstraints 유니크 제약조건을 부여한다. 2. 데이터베이스 스키마 자동 생성 옵션 hibernate.hbm2ddl.auto create : 시작 시점에 drop create-drop : 종료 시점에 drop update : 변경 부분만 반영 (컬럼을 추가하는.. 2020. 12. 27.
2. 영속성 관리 1. 엔티티 매니저 팩토리와 엔티티 매니저 DB 하나당 하나의 EntityManager Factory 가 있으며, EntityManager 을 요청마다 생성해 Connection pool 에 있는 커넥션을 사용하여 DB 에 접근하여 데이터를 CRUD 한다. 2. 영속성 컨텍스트 엔터티를 영구 저장하는 환경이라는 뜻이다. 영속성 컨텍스트는 엔터티 매니저를 통해 접근할 수 있다. 엔터티의 생명 주기 비영속 (new / transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 ex) new Member(); 영속 (managed) 영속성 컨텍스트에 관리되는 상태 ex) entitymanager.persist(member); ex) entitymanager.find(Member.class, "id").. 2020. 12. 26.