일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- pointcut
- Greedy
- Proxy
- kotlin
- springdatajpa
- 김영한
- Servlet
- SpringBoot
- 스프링 핵심 기능
- QueryDSL
- Spring Boot
- 알고리즘
- spring
- Exception
- transaction
- jpa
- 스프링
- 스프링 핵심 원리
- 백준
- 인프런
- Android
- 자바
- http
- 그리디
- db
- Thymeleaf
- java
- AOP
- JDBC
- JPQL
- Today
- Total
목록다대다 (4)
개발자되기 프로젝트
1. 다대다 관계형 데이터베이스는 정규화된 테이블 2개로 다대다 관계 표현이 안됨!!!!! 연결 테이블을 추가해서 일대다, 다대일 관계로 풀어내야함. 그런데??? 객체는 컬렉션을 사용해서 객체 2개로 다대다 가능 ㅋㅋㅋㅋ 2. 다대다 특징 @ManyToMany사용 @JoinTable로 연결 테이블 지정 단방향 , 양방향 가능 Member -> Product @ManyToMany @JoinTable(name = "MEMBER_PRODUCT") private List products = new ArrayList(); Product -> Member @ManyToMany(mappedBy = "products") private List members = new ArrayList(); 3. 다대다 한계 편리해 ..
1. 엔티티 클래스 개발 시 주의사항(Getter, Setter), 참고 이론적으로 Getter, Setter 모두 제공하지 않고, 꼭 필요한 별도의 메서드를 제공하는게 가장 이상적. Getter의 경우 모두 열어두는 것이 편리하다. Getter는 아무리 호출해도 호출 해도 값이 변하거나 무슨 일이 일어나지 않는다. 하지만 Setter를 호출하면 데이터가 변한다. Setter를 막 열어두면 엔티티가 왜? 변경되는지 추적하기 어려움 그래서 엔티티를 변경할 때는 Setter 대신에 변경 지점이 명확 하도록 변경을 위한 비즈니스 메서드를 별도로 제공해야 한다 테이블은 관례상 테이블명+id로 사용함. 그래서 column(name="필드명_id")로 했음. 2. 일대다, 다대일 many측에 FK가 있음. many..
1. 도메인 모델 회원과 주문의 관계 : 1 대 N 주문과 배송의 관계 : 1 대 1 카테고리와 상품의 관계 : N 대 N 주문과 상품의 관계 : N 대 N - 그러나 다대다 관계는 관계형 DB, entity에서도 사용하지 않음 - 1 대 N 관계로 풀기 위한 중간에 주문 상품이 존재. 상품을 도서 음반 영화 각각 상속 받음. 2. 엔티티 분석 Member : id(PK), 이름, 입베디드 타입인 Address, Order List를 가진다. Order : 한 번 주문 시 여러 상품 주문 가능함. 따라서 Order와 OrderItem을 일대다 관계. Order는 Item을 주문한 회원과 배송 정보, 주문 날짜, 주문 상태를 가지고 있다. 주문 상태는 열거형을 사용 --> 주문(Order), 취소(CANC..
이전에 작성한 ERD를 보면 book와 author가 다대다 관계이다. 1. Author Author와 Book은 M : N 관계이다. books에 @ManyToMany를 적용 @Entity @Data @NoArgsConstructor @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) public class Author extends BaseEntity{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long Id; private String name; private String country; @ManyToMany @ToString.Exclude private List ..