일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 김영한JPA
- HTTP3
- KAKAOLOGINAPI
- 무상태프로토콜
- 데이터베이스 방언
- HTTPMESSAGE
- 매핑정보가없는필드
- JPA
- http
- @Table
- 네이버로그인API
- 멱등활용
- 캐쉬가능
- @Entity
- anyMatch
- 자바ORM표준프로그래밍
- Transaction not successfully started
- gitrevert
- initialDelay
- fixedDelay
- hibernate.dialect
- DB방언
- Git
- ERROR TYPE : org.apache.ibatis.binding.BindingException
- 네이버 연결된 서비스
- Invalid bound statement (not found)
- org.apache.ibatis.binding.BindingException
- SpringBoot
- gitreset
- RFC723x
Archives
- Today
- Total
twocowsong
연관관계 사용 본문
연관관계를 등록, 수정, 삭제, 조회 하는 예제를 통해 연관관계를 어떻게 사용하는지 알아보겠습니다.
1. 저장
연관관계를 매핑한 엔티티를 어떻게 저장하는지 아래의 코드로 알아보겠습니다.
public class TestSave {
public static void main(String[] args) {
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("jpa-study");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
// 비즈니스 로직 시작
// 팀1 저장
Team team = new Team("team1", "팀1");
em.persist(team);
// 회원1 저장
Member member1 = new Member("member1", "회원1");
member1.setTeam(team); // 연관관계 설정 : member1 -> team1
em.persist(member1);
// 회원2 저장
Member member2 = new Member("member2", "회원2");
member2.setTeam(team); // 연관관계 설정 : member2 -> team1
em.persist(member2);
tx.commit();
}
catch (Exception e) {
tx.rollback();
}
}
}
JPA에서 엔티티를 저장할 때 연관된 모든 엔티티는 영속 상태여야합니다.
중요한 부분을 분석해보겠습니다.
member1.setTeam(team); // 연관관계 설정 : member1 -> team1
em.persist(member1);
회원 엔티티는 팀 엔티티를 참조하고 저장했습니다.
JPA는 참조한 팀의 식별자(Team.id) 를 외래 키로 사용해서 적절한 등록 쿼리를 생성하였습니다.
이때 실행된 SQL은 다음과 같습니다.
INSERT INTO TEAM(TEAM_ID, NAME) VALUES ('team1', '팀1');
INSERT INTO MEMBER (MEMBER_ID, NAME, TEAM_ID) VALUES ('member1', '회원1', 'team1');
INSERT INTO MEMBER (MEMBER_ID, NAME, TEAM_ID) VALUES ('member2', '회원2', 'team1')
'IT > JPA' 카테고리의 다른 글
연관관계 수정 (0) | 2022.06.01 |
---|---|
연관관계 조회 (0) | 2022.05.31 |
@ManyToOne (0) | 2022.05.28 |
@JoinColumn (0) | 2022.05.28 |
객체 관계 매핑 (0) | 2022.05.28 |