일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 2961 도영이가 만든 맛있는 음식
- 2643 색종이 올려 놓기
- django windows 배포 에러
- django The requested operation has failed!
- 18233 러버덕
- django
- django httpd error
- django 웹 페이지
- 2643 java
- 18233 java
- 18233 비트마스킹
- django 프로젝트 시작
- 2961 java
- 1188 java
- django apache deploy error
- 2661 좋은 수열
- APPEND_SLASH = FALSE
- 14711 java
- 1188 음식 평론가
- The requested operation has failed!
- windows apache wsgi 에러
- 원격 연결 포트 포워딩
- django settings.py
- Problems occurred while performing provisioning operation
- apache pythonpath
- windows 원격 연결 설정
- 14711 타일 뒤집기
- 2661 java
- java di
- 공유기 원격 설정
목록Java/JPA (3)
라이브러리는 도서관 아닌가요
두 객체가 양방향 연결 관계일 때는 mappedBy 속성을 사용한다. 자주 쓰이는 다대일 양방향 매핑을 예로 들어보자. 먼저 다대일 관계는 다(多)에 외래키가 있다. 즉 외래키를 가지는 연관관계의 주인은 다(多) 방향이 된다. 다 방향에는 당연히 @ManyToOne이, 일(一) 방향에는 당연히 @OneToMany가 선언되어 있다. 마지막으로 mappedBy는 주인이 아닌 쪽에서 사용 된다. 따라서 mappedBy는 @OneToMany의 속성으로 사용된다는 것을 알 수 있다. @Entity public class Member{ // ~ 이전 내용 ~ @ManyToOne @JoinColumn(name="TEAM_ID") private Team team; // ~ 다음 내용 ~ } @Entity public ..
@MappedSuperclass 실제 테이블과 매핑 되지 않고, 매핑 정보(속성 따위)를 자식 테이블에 상속할 목적으로 사용 된다. 식별 관계 부모 테이블의 기본 키를 내려 받아서 자식 테이블의 기본 키 + 외래키로 사용하는 관계 비식별 관계 부모 테이블의 기본 키를 받아서 자식 테이블의 외래 키로만 사용하는 관계 - 필수적(Mandatory) | 선택적(Optional) 비식별 관계로 나뉜다. (NULL 비허용 | 허용) @IdClass 데이터베이스 중심적, 식별자 클래스 매핑 - 키를 가지고 있는 클래스에 붙여서 사용 @EmbeddedId 객체지향적, 식별자 클래스 매핑 - 키에 붙여서 사용 - 선언한 식별자 클래스를 직접 생성해서 사용 동일성 비교 참조 주소 비교 동등성 비교 값 비교 복합키 클래스..
개념상 두 엔티티는 다대다로 묶일 수 있다. 다만 관계형 데이터베이스에서는 테이블 두 개로 다대다를 표현할 수 없다. 따라서 두 엔티티에 대한 테이블 관계를 일대다, 다대일 테이블 관계로 풀어내야 한다. 결국 두 테이블 사이에 연결 테이블이 하나 더 생겨 3개가 된다. 이러한 보이지 않는 매핑과 생성을 JPA의 hibernate가 알아서 해준다. 그럼 왜 JPA의 다대다를 실무에서 쓰지 말라고 할까? 자동으로 생성되는 연결 테이블에 사실상 데이터를 추가하는 것이 불가능하기 때문이다. 예를 들어 이미 생성된 연결 테이블에 주문 시간, 주문 수량과 같은 데이터를 추가하라는 요청이 들어왔을 때 해결할 수 없다. 또한 두 테이블과 연결 테이블 간에 오고 가는 쿼리를 파악해야 하는 불편함까지 있다. 그래서 쓰지 ..