일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바
- 인프런
- Proxy
- pointcut
- 스프링 핵심 기능
- 스프링 핵심 원리
- JDBC
- Exception
- db
- 그리디
- Spring Boot
- transaction
- Thymeleaf
- springdatajpa
- QueryDSL
- Greedy
- kotlin
- AOP
- 김영한
- 알고리즘
- 스프링
- SpringBoot
- spring
- jpa
- java
- Android
- Servlet
- http
- 백준
- JPQL
- Today
- Total
목록jpa (149)
개발자되기 프로젝트
본격적으로 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의 의미는 해당 클래스를 상위 엔티티의 컬럼으로 쓰겠다는 의..
히스토리 데이터의 경우 db의 특정 데이터가 수정이 되면 해당 값의 복사본은 다른 테이블에 복사해 두는 경우가 있음. 이전에 만든 user에 대한 정보는 중요한 정보로, 데이터의 수정이 이뤄졌을 때 수정된 내역의 히스토리가 필요하닫. 1.UserHistory class User의 수정 History 정보를 담을 클래스를 작성하자. package com.jpa.bookmanager.domain; import lombok.*; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import java.time.LocalDateTime; @Entity @NoArgsConstruct..
1. Ioc(Inversion of Control) 스프링에서는 일반적인 JAVA 객체를 new로 생성하여 개발자가 관리하는 것이 아닌! Spring Container에 모두 맡긴다. 즉, 개발자에서 -> 프레임워크로 제어의 객체 관리의 권한이 넘어간다! : "제어의 역전" 2. DI(Dependency Injection) 의존성 주입을 뜻함. DI 장점 - 의존성으로 부터 격리시켜 코드 테스트에 용이하다. - DI를 통하여, 불가능한 상황을 Mock과 같은 기술을 활용하여, 안정적으로 테스트 가능. - 코드를 확장하거나 변경할 때 영향을 최소화 한다.(추상화) - 순환참조를 막을 수 있다. 3. Bean Spring IoC 컨테이너에서 관리하는 객체를 뜻하며, ApplicationContext.ge..
Listener : 이벤트를 관찰하고 있다가 이벤트가 발생하면 특정 동작을 진행하는 것을 말한다. Entity Listener는 Entity가 동작하는 몇 가지 방법에 대한 이벤트를 관찰하고 있음. 1. Listener 관련 annotaions @PrePersist Persist, insert method 실행 전(해당 엔티티 저장 전) @PreUpdate Merge method 실행 전(해당 엔티티 업데이트 전) @PreRemove Delete method 실행 전(해당 엔티티 삭제 전) @PostPersist Persist method 실행 후(해당 엔티티 저장 후) @PostUpdate Merge method 실행 후(헤당 엔티티 업데이트 후) @PostRemove Delete method 실행 후..
1.@Entity Entity란 JPA가 관리하는 클래스로 @Entity를 통해 테이블과 클래스를 맵핑할 수 있다. @Entity //Entity에는 primary key가 꼭 필요함., JPA가 관리하고 있는 객체 @EqualsAndHashCode public class User { @NonNull private String name; @NonNull private String email; private LocalDateTime createdAt; private LocalDateTime updatedAt; @Id @GeneratedValue //자동으로 하나씩 증가함. private Long id; 해당 클래스에서 사용하는 변수를 column으로 대응된다고 보면 된다. 2. @Id @Entity가 지정..