일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- org.apache.ibatis.binding.BindingException
- @Entity
- 매핑정보가없는필드
- DB방언
- anyMatch
- Transaction not successfully started
- HTTPMESSAGE
- Invalid bound statement (not found)
- KAKAOLOGINAPI
- gitrevert
- SpringBoot
- initialDelay
- 김영한JPA
- http
- 무상태프로토콜
- 자바ORM표준프로그래밍
- fixedDelay
- gitreset
- @Table
- 네이버로그인API
- 캐쉬가능
- 데이터베이스 방언
- RFC723x
- 네이버 연결된 서비스
- HTTP3
- ERROR TYPE : org.apache.ibatis.binding.BindingException
- Git
- hibernate.dialect
- 멱등활용
- JPA
- Today
- Total
목록IT/JPA (77)
twocowsong
1 : 1 관계를 구성할 때 객체지향 개발자들은 주 테이블에 외래 키가 있는것을 선호합니다. JPA도 주 테이블에 외래 키가 있으면 좀더 편리하게 매핑할 수 있습니다. 단방향 회원과 사물함의 1 : 1 단방향 관계를 알아보겠습니다. MEMBER가 주 테이블이고 LOCKER는 대상 테이블입니다. @Entity @Table(name = "MEMBER") public class Member { @Id @GeneratedValue @Column(name="MEMBER_ID") private Long id; private String username; @OneToOne @JoinColumn(name = "LOCKER_ID") private Locker locker; // Getter, Setter... } @En..
1 : 1 관계는 양쪽이 서로 하나의 관계만 가집니다. 예를 들어 회원은 하나의 사물함만 사용하고 사물함도 하나의 회원에 의해서만 사용합니다. 1 : 1 관계는 다음과 같은 특징이 있습니다. - 1 : 1 관계는 그 반대도 1 : 1 입니다. - 테이블 관계에서 1 : N, N : 1은 항상 N 쪽이 외래키를 가지지만 1 : 1 관계는 주 테이블이나 대상 테이블 둘중 어느 곳이나 외래키를 가질 수 있습니다. 외래 키 하나만 있으면 양쪽으로 조회 할 수 있습니다. 따라서 1 : 1 관계는 주 테이블이나 대상 테이블 중 누가 외래 키를 가질지 선택해야 합니다. 주 테이블 외래 키 주 객체가 대상 객체를 참조하는 것 처럼 주 테이블에 외래 키를 두고 대상 테이블을 참조합니다. 외래 키를 객체 참조와 비슷하게 ..
1 : N 양방향 매핑은 존재하지 않습니다. 대신 N : 1 양방향 매핑을 사용해야 합니다. (1 : N 양방향과 N : 1 양방향은 사실 같은 말입니다. 여기서는 왼쪽을 연관관계의 주인으로 가정해서 분류합니다. 예를 들어 N : 1이면 N이 연관관계의 주인입니다.) 양방향 매핑에서 @OneToMany는 연관관계의 주인이 될 수 없습니다. 왜냐하면 관계형 DB의 특성상 1 : N입니다. N : 1 관계는 항상 다 쪽에 외래 키가 있습니다. 따라서 @OneToMany, @ManyToOne 둘 중에는 연관관계의 주인은 항상 다 쪽인 @ManyToOne을 사용한 곳입니다. 이런이유로 @ManyToOne에는 mappendBy속성이 없습니다. 1 : N 양방향 매핑이 완전히 불가능한것은 아닙니다. 1 : N 단방..
1 : N 관계는 N : 1 관계의 반대 방향입니다. 1 : N 관계는 엔티티를 하나 이상 참조할 수 있으므로 자바 컬렉션인 Collection, List, Set, Map중에 하나를 사용합니다. 1 : N [일 대 다 단방향] 하나의 팀은 여러 회원을 참조할 수 있습니다. 이런 관계를 1 : N 관계라 합니다. 반대로 회원은 팀을 참조하지 않으면 둘의 관계는 단방향입니다. [객체 연관관계] 객체 연관관계의 그림을 보면 약간 특이한곳이 있습니다. 팀 엔티티의 Team.member로 회원 테이블 TEAM_ID 외래 키를 관리합니다. 보통 자신이 매핑한 테이블의 외래 키를 관리하는데, 이 매핑은 반대쪽 테이블에 있는 외래 키를 관리합니다. 1 : N 관계에서 외래 키는 항상 N쪽 테이블에 있습니다. 하지만 ..
N : 1 관계의 반대 방향은 항상 1 : N 관계입니다. 반대도 항상 동일합니다. DB 테이블의 1, N 관계에서 외래 키는 항상 N쪽에 있습니다. 따라서 객체 양방향 관계에서 연관관계의 주인은 항상 N쪽입니다. 예를들어 회원(N)과 팀(1)이 있으면 회원 쪽이 연관관계의 주인입니다. N : 1 [ 다대일 단방향 ] 회원은 Member.team으로 팀 엔티티를 참조할 수 있지만 반대로 팀에는 회원을 참조하는 필드가 없습니다. 따라서 회원과 팀은 N : 1 단방향 연관관계입니다. @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; @JoinColumn(name = "TEAM_ID")를 사용해서 Member.team필드를 TEAM_ID외래 키와 매핑했..
JPA 서적에는 없는내용입니다만 한번 정리하고 넘어가야할것같아 남기겠습니다. mappedBy에 대하여 충분히 이해하셨다면 본글을 넘어가셔도 무방하십니다. 개인적으로는 mappedBy에 대하여 한번더 정리를 해야겠다고 판단 후 본 글을 작성하였습니다. User(회원), OrderHobby(취미 주문), Hobby(취미) 3개의 엔티티가있습니다. @Getter @Setter @Entity @Table(name = "user") public class User { @Id @GeneratedValue @Column(name = "user_id") private int id; private int age; private String name; private String address; @OneToMany(mapp..
엔티티의 연관관계를 매핑할 때는 다음 3가지를 고려해야합니다. - 다중성 - 단방향, 양방향 - 연관관계의 주인 먼저 연관관계가 있는 두 엔티티가 1 : 1 인지 1 : N 관계인지 다중성을 고려해야합니다. 다음으로 두 엔티티 중 한쪽만 참조하는 단방향인지 양방향인지 고려해야합니다. 마지막으로 양방향 관계면 연관관계의 주인을 정해야 합니다. 다중성 연관관계에는 다음과 같은 다중성이 있습니다. - N : 1 - 1 : N - 1 : 1 - N : M 다중성을 판단하기 어려울 때는 반대방향을 생각해보면 됩니다. 1 : N의 반대방향은 항상 N : 1이고, 1 : 1의 반대방향은 항상 1 : 1입니다. 보통 N : 1과 1 : N 관계를 가장 많이 사용하고 N : M관계는 실무에서 거의 사용하지 않습니다. 단..
https://twocowsong.tistory.com/105 [실전 예제] 요구사항 분석과 기본 매핑 깃허브 정리 URL : https://github.com/sWineTake/jpa.git GitHub - sWineTake/jpa: 자바 ORM 표준 JPA 프로그래밍 - 김영한 자바 ORM 표준 JPA 프로그래밍 - 김영한. Contribute to sWineTake/jpa development.. twocowsong.tistory.com 앞의 실전 예제는 외래 키를 엔티티에 그대로 가져오는 문제가 있었습니다. 엔티티에서 외래 키로 사용한 필드는 제거하고 참조를 사용하도록 변경해보겠습니다. 객체 관계는 외래 키를 직접 사용하는것에서 참조를 사용하도록 변경하겠습니다. @Setter @Getter @En..