다대일(N:1) - 단방향 연관관계

PPakSSam·2022년 1월 7일
0
post-thumbnail

다대일(N:1) 목차

다대일(N:1) - 단방향 연관관계 목차


단방향 연관관계

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

[Member]

@Entity
 public class Member { 
	
	 @Id @GeneratedValue
	 private Long id;
     
	 @Column(name = "USERNAME")
	 private String name;
     
	 /*@Column(name = "TEAM_ID")
	 private Long teamId;*/
     
     	 @ManyToOne
         @JoinColumn(name = "TEAM_ID)
         private Team team;
     
	 // getter, setter... 

 } 

[Team]

@Entity
 public class Team {

	 @Id @GeneratedValue
	 private Long id;
     
	 private String name;
	 
     	// getter, setter... 
}

[JpaMain]

public class JpaMain {

	public static void main(String[] args) {
    	
        ... 생략
        
        // 팀저장
        Team team = new Team();
        team.setName("teamA");
        em.persist(team);
        
        // 회원 저장
        Member member = new Member();
        member.setUsername("member1");
        member.setTeamId(team.getId());
        em.persist(member);
        
        // 조회
        Member findMember = em.find(Member.class, member.getId());
        
        // 참조를 사용해서 연관관계 조회
        Team findTeam = findMember.getTeam();
        
        // 새로운 팀B
        Team teamB = new Team();
        teamB.setName("teamB");
        em.persist(teamB);
        
        // 회원1에 새로운 팀B 설정
        member.setTeam(teamB);
        
        ... 생략
    }
}

참고

@JoinColumn의 name과 referencedColumnName 속성

  • name : 외래키의 이름을 지정한다.
  • referencedColumnName : 기본값이 해당테이블의 PK이다.
    -> 따라서 PK가 아닌 컬럼을 외래키로 지정하고 싶으면 반드시 이 속성을 작성해야한다!!
    -> 만약 작성하지 않는 경우 오류가 발생한다.
profile
성장에 대한 경험을 공유하고픈 자발적 경험주의자

0개의 댓글