오늘은 개인 과제 진행 이후 JPA강의를 들으며 ORM의 성장과정, 영속성 등에 대해 공부했다.
강의 내용을 정리하며 복습해보고자한다.
영속성이란 단어를 많이 들었고, 또 써왔기에 익숙한 이름이었다. 하지만 이름의 의미를 확실히는 모르고 있었다.
강의를 들으며 영원하다는 의미로 '영속성'이라고 했구나 싶었다.
기초적인 내용이지만 비영속, 영속, 준영속, 삭제의 그림을 한번 첨부해본다.
이전에 이미 영속성을 깊이 공부하여 포스팅 했으므로 슥 보고 지나가자.
1차 캐시, 2차캐시 조회 후 없으면 DataSource 에서 조회한다.
1차 캐시란 영속성 컨텍스트 내부에는 엔티티를 보관하는 저장소를 의미한다.
아직까지 사용해왔던 흔히 사용해왔던 것이 1차 캐시인 것이다.
2차 캐시란 애플리케이션 범위의 캐시를 의미하며 '공유 캐시'라고도한다.
// Team.java
@Entity
@Cacheable
public class Team {
@Id @GeneratedValue
private Long id;
...
}
# application.yml
spring.jpa.properties.hibernate.cache.use_second_level_cache: true
# 2차 캐시 활성화
spring.jpa.properties.hibernate.cache.region.factory_class: XXX
# 2차 캐시를 처리할 클래스를 지정
spring.jpa.properties.hibernate.generate_statistics: true
# 하이버네이트가 여러 통계정보를 출력하게 해주는데, 캐시 적용 여부를 확인시켜준다.
# appplication.yml
spring.jpa.properties.javax.persistence.sharedCache.mode: ENABLE_SELECTIVE
컬럼에서 Many: 자식 객체
(보통의 경우) 많은 쪽인 자식객체가 @JoinColumn을 가지도록 되어있음.
mappedBy: "연관관계 주인 필드"