일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 김영한
- Exception
- JPQL
- Spring Boot
- 알고리즘
- pointcut
- JDBC
- Proxy
- db
- http
- transaction
- 인프런
- 자바
- QueryDSL
- AOP
- springdatajpa
- Thymeleaf
- SpringBoot
- Android
- Servlet
- jpa
- 그리디
- 스프링
- Greedy
- kotlin
- 스프링 핵심 원리
- 백준
- java
- spring
- 스프링 핵심 기능
- Today
- Total
목록JPA (49)
개발자되기 프로젝트
다른 entiry에 대해서도 연관관계를 맺어주자. 1. Book 1) Book : Review = 1 : N --> @OneToMany -->중간 table 만들지 않기 위해 @JoinColumn필수 @JoinColumn(name = "book_id") --> name = "one_PK", 현재 class의 PK를 many의 FK로. List reviews = new ArraryList(); --> Null Point Exception방지를 위해 생성. 2) Book : Publisher = N : 1 --> @ManyToOne @Entity @NoArgsConstructor @Data @EntityListeners(value = AuditingEntityListener.class) @ToString(c..
1 : N 연관관계 - 1 이전에 만들어둔 User entity와 User History는 1:N연관관계를 갖는다. User는 현재 회원정보를 가지고 있는 테이블이고 UserHistory는 특정 user id에 저장된 값이 변경된 내역을 저장하는 table이다. 1. test @.. bsh-developer.tistory.com 앞서 1 : N의 연관관계를 살펴보았다. 1 : N 관계를 이해하기 어려웠던 이유는 N(many)쪽에서 1(one)의 PK를 FK로 가지고 있었기 때문이다. 일반적으로는 @ManyToOne이 깰끔하게entity를 구성할 수 있따. 해당 entity가 필요로 하는 FK값을 entity가 함께 가지고 있다. 이전에는 User class에서 @OneToMany를 적용했다면, 이번번에는..
이전에 만들어둔 User entity와 User History는 1:N연관관계를 갖는다. User는 현재 회원정보를 가지고 있는 테이블이고 UserHistory는 특정 user id에 저장된 값이 변경된 내역을 저장하는 table이다. 1. test @Test void userRelationTest(){ User user = new User(); user.setName("David"); user.setEmail("dabid@navergoogle.com"); user.setGender(Gender.MALE); userRepository.save(user); userHistoryRepository.findAll().forEach(System.out::println); } } 먼저 relation을 테스트 하..
본격적으로 entity의 관계를 코드로 구현해보장. 1. Book 과 Book Review Info는 1:1 관계 이번에는 test코드에 BookRepository에 대한 의존성도 추가해보자. Book Review repository에서 아이디가 1인 리뷰를 찾고 그에 해당하는 book id를 가져와서 해당 book에 대한 정보를 출력해보자. @SpringBootTest class BookReviewInfoRepositoryTest { @Autowired private BookReviewInfoRepository bookReviewInfoRepository; @Autowired private BookRepository bookRepository; @Test void curdTest2(){ Book boo..
단방향 객체 관계 2개를 사용하여 양방향 관계 1개를 만들 경우 필요하다. * 객체 연관관계 BookReviewInfo --> Book : 단방향, bookReviewInfo.get(book) Book --> BookReviewInfo: 단방향, book.get(bookReviewInfo) * 테이블 연관관계 BookReviewInfo Book : 양방향 정확히는 객체에는 양방향 관계라는 것이 없다. 단지 서로 다른 2개의 단방향 관계를 잘 엮어서 양방향 인 것 처럼 보일 뿐. 하지만 데이터베이스 테이블은 FK하나로 양쪽에 조인이 가능. 즉 객체는 각 단방향 관계에서 별도로 FK를 사용하여 조인을 하지만! 데이터베이스 테이블은 하나의 FK로 양쪽에 조인을 한다는 것. 따라서 참조할 요소는 2개인데 FK는..
ERD(Entity Relationship Diagram) ERD는 Entity의 연관관계를 도식화한 표현이다. diagram을 통해 entity들의 연관 관계를 쉽게 파악할 수 있다. 1. 관계 표기법 2. 다이어그램 예시 * PK : primary key * FK : foreign key bsh-developer.tistory.com Entity Listener : 4(실제 사용하는 방법) 좀 더 현실적으로 코드를 수정해보자. createdAt, updatedAt에 각각 @CreatedDate, @LastModifidedDate 붙여주고, @AuditingEntityListener를 활용하여 간단하게 적용할 수 있었다. 하지만 각 class의 createdAt,.. bsh-developer.tisto..
좀 더 현실적으로 코드를 수정해보자. createdAt, updatedAt에 각각 @CreatedDate, @LastModifidedDate 붙여주고, @AuditingEntityListener를 활용하여 간단하게 적용할 수 있었다. 하지만 각 class의 createdAt, updatedAt에 일일히 annotation을 붙여주는 것도 일이다. 귀찮다. createdAt, updatedAt만 담당하는 class를 만들고 다른 class에서 상속받도록 하자. 그러면 일일히 안해줘도 된다. ㄱㅇㄷ 1. BaseEntity class BaseEntity 클래스를 만들자. 특징으로는 @MappedSuperclass를 사용한다. 해당 annotation의 의미는 해당 클래스를 상위 엔티티의 컬럼으로 쓰겠다는 의..
앞에서 정보의 생성/수정시 생성된 시간/수정된 시간이 입력될 수 있도록 EntityListener를 직접 만들어서 활용했다. 2021.06.15 - [JPA] - Entity Listener - 1 Entity Listener - 1 istener : 이벤트를 관찰하고 있다가 이벤트가 발생하면 특정 동작을 진행하는 것을 말한다. Entity Listener는 Entity가 동작하는 몇 가지 방법에 대한 이벤트를 관찰하고 있음. 1. Listener 관련 annotaions @P bsh-developer.tistory.com 2021.06.16 - [JPA] - Entity Listener : 2 Entity Listener : 2 히스토리 데이터의 경우 db의 특정 데이터가 수정이 되면 해당 값의 복사본..