데이터수정
가급적 update하지말고 변경감지를 활용.
id로 조회하여 setVal(..)로 수정
request, response에 entity 직접사용 금지
계층분리를 신경쓰지 않더라도 entity는 계속 변화하므로 스펙으로써 활용할 수 없음
컬렉션 조회 최적화
컬렉션 조회 : 다른 테이블과 연결하면 row가 늘어나는 1:N 관계의 조회
lazy인 *ToOne 관계는 row를 증가시키지 않으므로 fetchjoin
나머지 *ToMany 관계는 LazyLoading
application.yml에 hibernate.default_batch_fetch_size 를 적절하게 설정
개별설정은 @batchSize.
설정한 수만큼 lazyLoading시 in절로 한번에 조회
OSIV
open session in View
application.yml에서 설정 spring.jpa.open-in-view
true : 요청이 완전히 끝날때까지 커넥션을 유지. 이때만 lazyLoading이 가능
실시간 트래픽이 많을때는 커넥션이 부족할 수 있음
false : service단에서 트렌젝션을 종료할때 커넥션을 반환.
lazyLoading은 service단에서 처리해야 함
조회와 command를 분리하여 복잡성을 관리하는 CQRS 적용하면 좋다