[JPA]연관 관계 단방향,양방향

윤재열·2022년 2월 27일
0

JPA

목록 보기
3/21
post-custom-banner

용어이해

  • 방향(Direction) : 단방향, 양방향
  • 다중성(Multiplicity) : 다대일(N:1), 일대다(1:N), 다대다(M:N)
  • 연결관계의 주인(Owner) : 객체 양방향 연관관계는 관리주인이 필요

단반향 연관관계

객체 지향 모델링

객체 연관관계 사용

@Entitypublic class Member {private Long id;
 

@Column(name = "USERNAME")private String name;private int age;@Column(name = "TEAM_ID")private Long teamId;@ManyToOne@JoinColumn(name = "TEAM_ID")private Team team;

ORM 매핑

//팀 저장

Team team = new Team();

team.setName("TeamA");
 em.persist(team);



//회원 저장

Member member = new Member();
 member.setName("member1");

member.setTeam(team); //단방향 연관관계 설정, 참조 저장
 em.persist(member);


//조회

Member findMember = em.find(Member.class, member.getId());
//참조를 사용해서 연관관계 조회

Team findTeam = findMember.getTeam();

연관관계 수정

// 새로운 팀BTeam teamB = new Team();
 teamB.setName("TeamB");
 em.persist(teamB);



// 회원1에 새로운 팀B 설정
 member.setTeam(teamB);

양방향 연관관계와 연관관계의 주인

양방향 매핑

  • Member Entity
@Entitypublic class Member {private Long id;
 

@Column(name = "USERNAME")private String name;private int age;



@ManyToOne@JoinColumn(name = "TEAM_ID")private Team team;
  • Team Entity
@Entitypublic class Team {





private String name;



}
@Id @GeneratedValueprivate Long id;@OneToMany(mappedBy = "team")List<Member> members = new ArrayList<Member>();
  • 조회
//조회Team findTeam = em.find(Team.class, team.getId());int memberSize = findTeam.getMembers().size(); //역방향 조회
profile
블로그 이전합니다! https://jyyoun1022.tistory.com/
post-custom-banner

0개의 댓글