에러 안나게 해주세요

단방향 연관관계 본문

Spring/JPA

단방향 연관관계

Coom 2021. 3. 19. 16:02

목표

- 객체와 테이블 연관관계의 차이를 이해

- 객체의 참조와 테이블의 외래 키를 매핑

- 용어 이해

  >> 방향(Direction) : 단방향 , 양방향

  >> 다중성(Multiplicity) : 다대일(N:1),일대다(1:N),일대일(1:1),다대다(N:M) 이해

  >> 연관관계의 주인(Owner): 객체 양방향 연관관계는 관리 필요

 

객체 지향 모델링 (객체 연관관계 사용)

 

 

1:N 모델링

@Entity
public class Member {
    @Id
    @GeneratedValue
    @Column(name = "MEMBER_ID")
    private Long id;

    @Column(name = "USERNAME")
    private String username;

//    @Column(name = "TEAM_ID")
//    private  Long  teamId;

    //N:1 1대다
    @ManyToOne
    @JoinColumn (name = "TEAM_ID")
    private Team team;

객체 연관관계에서는 클래스 객체를 조인 컬럼으로..

 

public class JpaMain {
    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");

        EntityManager em = emf.createEntityManager();

        EntityTransaction tx = em.getTransaction();
        tx.begin();

        try {

            Team team = new Team();
            team.setName("TeamA");
            em.persist(team);

            Member member = new Member();
            member.setUsername("member1");
            member.setTeam(team);
            em.persist(member);

            // 영속성 컨텍스트를 초기화해서 select 쿼리를 보고 싶은 경우 !!
            // 쿼리를 디비에 날림
//            em.flush();
            // 컨텍스트 초기화
//            em.clear();

            Member findMember = em.find(Member.class, member.getId());

            Team findTeam = findMember.getTeam();
            System.out.println("findTeam.getName() = " + findTeam.getName());




            tx.commit();
        } catch (Exception e) {
            tx.rollback();
        } finally {
            em.close();
        }
        emf.close();
    }
}

'Spring > JPA' 카테고리의 다른 글

양방향 연관관계와 연관관계의 주인 (2) - 주의점,정리  (0) 2021.03.19
양방향 연관관계와 연관관계의 주인  (0) 2021.03.19
기본 키 매핑  (0) 2021.03.17
엔티티 매핑 (2)  (0) 2021.03.16
엔티티 매핑 (1)  (0) 2021.03.16