2023. 9. 29. 00:06ㆍLECTURES/실전! 스프링 부트와 JPA 활용
홈 화면과 레이아웃
홈 컨트롤러 등록
https://github.com/dpdms529/JpaShop/commit/2985a45fd6b7719d8416f7ca39468668edd59e84
타임리프 템플릿 등록
https://github.com/dpdms529/JpaShop/commit/e01ed9675cab4c6a09084d73c06cd5eb0054071c
view 리소스 등록
https://github.com/dpdms529/JpaShop/commit/e5271eb4cdc915607e02bc485249a73ad699a7aa
회원 등록
https://github.com/dpdms529/JpaShop/commit/c596319f7b0cdcccdec9982ccc78e3b77490d699
회원 목록 조회
https://github.com/dpdms529/JpaShop/commit/1223d51880aee4b4898dc39e70bf9448838f0442
상품 등록
https://github.com/dpdms529/JpaShop/commit/774f6c510637c4ed32ad5e710834b899675c1121
상품 목록
https://github.com/dpdms529/JpaShop/commit/b461a65785ebf0aaac3a5093387b5936f573bbfe
상품 수정
https://github.com/dpdms529/JpaShop/commit/04fddae48d5a2fb7f7ca0c23ae61b7ab3145313e
변경 감지와 병합(merge)
준영속 엔티티
- 영속성 컨텍스트가 더는 관리하지 않는 엔티티
- DB에 한번 저장되어서 식별자를 가지는 엔티티
- JPA가 관리하지 않으므로 변경 감지가 일어나지 않음
준영속 엔티티를 수정하는 2가지 방법
https://github.com/dpdms529/JpaShop/commit/ab98c76be2759d5c47bc2cee756822dbe3d36a8c
- 변경 감지 기능 사용
- 영속성 컨텍스트에서 엔티티를 다시 조회한 후에 데이터를 수정
- 트랜잭션 안에서 엔티티를 다시 조회, 변경할 값 선택
- 트랜잭션 커밋 시점에 변경 감지해서 데이터베이스에 UPDATE 실행
- 병합(merge) 사용
- 준영속 상태의 엔티티를 영속 상태로 변경
em.merge()
병합 동작 방식
merge()
실행- 파라미터로 넘어온 준영속 엔티티의 식별자 값으로 1차 캐시에서 엔티티를 조회
- 만약 1차 캐시에 엔티티가 없으면 데이터베이스에서 엔티티를 조회하고, 1차 캐시에 저장
- 조회한 영속 엔티티에 변경할 값을 가지는 엔티티의 값을 채워 넣음
- 영속 상태인 변경된 엔티티를 반환
병합 주의 사항
- 변경 기능을 사요하면 원하는 속성만 선택해서 변경 가능
- 병합을 사용하면 모든 속성이 변경됨
- 병합시 값이 없으면 null로 업데이트 할 위험이 있음
엔티티를 변경할 때는 변경 감지 사용하는 것을 권장
- 컨트롤러에서는 엔티티 생성 X
- 트랜잭션이 있는 서비스 계층에 식별자와 변경할 데이터를 파라미터 또는 dto로 명확하게 전달
- 트랜잭션이 있는 서비스 계층에서 영속 상태의 엔티티를 조회하고, 엔티티의 데이터를 직접 젼경
- 트랜잭션 커밋 시점에 변경 감지가 실행
상품 주문
https://github.com/dpdms529/JpaShop/commit/59b167e90801d71590702c2aed54f7f143bbdb38
주문 목록 검색
https://github.com/dpdms529/JpaShop/commit/6d65bcac202d38197f40999c0ad4ef3d3c9c8536
주문 취소
https://github.com/dpdms529/JpaShop/commit/4f9aecae95736c8ecb83cd119f125979481cc3ec
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 - 인프런 | 강의
실무에 가까운 예제로, 스프링 부트와 JPA를 활용해서 웹 애플리케이션을 설계하고 개발합니다. 이 과정을 통해 스프링 부트와 JPA를 실무에서 어떻게 활용해야 하는지 이해할 수 있습니다., 스프
www.inflearn.com
'LECTURES > 실전! 스프링 부트와 JPA 활용' 카테고리의 다른 글
지연 로딩과 조회 성능 최적화 (0) | 2023.09.29 |
---|---|
API 개발 기본 / 고급 준비 (0) | 2023.09.29 |
주문 도메인 개발 (0) | 2023.09.29 |
상품 도메인 개발 (0) | 2023.09.29 |
회원 도메인 개발 (0) | 2023.09.29 |