어제 팀원들이랑 대화하다가 새벽 3시쯤 잠들어서 파워냅 30분했는데 코딩하는 꿈을 꿨습니다...😱 하루종일 코딩만 생각하니 이런 꿈도 꿉니다. 오늘은 주특기 2주차 시작일로 Spring 숙련주차입니다. 강의가 새로 지급되었고 개인과제와 팀과제가 새로 나왔습니다. 다들 월드컵 보러 갈 때 치킨으로 만족하고 강의 듣습니다.🍗🍗🍗
JPA 심화
- JPA는 자동으로 Id값을 찾아주지만 (@GeneratedValue 사용) Query는 Select를 사용해 최대값을 넣어서 찾아서 마지막 id값+1해서 넣어줘야 한다
- JPA를 사용하면 query보다 간단함
- Spring Data JPA 사용
영속성 컨텍스트 Persistence context
- 엔티티를 영구 저장 하는 환경
- 어플리케이션이 데이터베이스에서 꺼내온 데이터 객체를 보관하는 역할
- 영속성 컨텍스트는 엔티티 매니저를 통해 엔티티를 조회하거나 저장할때 엔티티를 보관하고 관리함
1. find(”memberB”)와 같은 로직이 있을 때 먼저 1차 캐시를 조회
2. 있으면 해당 데이터를 반환
3. 없으면 그 때 실제 DB로 “SELECT * FROM….” 의 쿼리를 보냄
4. 반환하기 전에 1차캐시에 저장하고 반환
=> MemberA, MemberB를 생성할 때 마다 DB를 다녀오는건 비효율적
해결책 =>“쓰기 지연 SQL 저장소” Transactional write-behind
1. memberA, memberB를 영속화
2. entityManager.commit() 메서드를 호출
3. 내부적으로 쓰기 지연 SQL 저장소에서 Flush가 발생 -> 임의로 시점 지정 가능
4. “INSERT A”, “INSERT B”와 같은 쓰기 전용 쿼리들이 DB로 전달
@Enumerated
- 속성으로는 Ordinal, String이 있음
- String인경우 해당 문자열 그대로 저장해서 비용은 많이 들지만, 나중에 Enum이 변경되어도 위험할일이 없기 때문에 일반적으로는 String을 사용합니다.
- Enum은 데이터 순서대로 값을 매기기 때문에 변경되거나 삭제시 오류가 발생할 수 있음
- 값이 변경되어도 위험할 일이 없기 때문에 대부분 String을 사용
'TIL' 카테고리의 다른 글
TIL/WIL 부트캠프 3주차 회고 221204 (0) | 2022.12.04 |
---|---|
TIL Spring @Component @Autowired 어노테이션 제어의 역전 221203 (0) | 2022.12.03 |
TIL 자바 백엔드 공부 로드맵 (feat. 11월 회고) 221201 (0) | 2022.12.01 |
TIL 팀과제 JPA 뜻 Request Response HTTP Method 221130 (0) | 2022.12.01 |
TIL Spring boot 1주차 개인 과제 CRUD Postman JPA 221129 (0) | 2022.11.30 |