Tips-tips dalam menggunakan Spring Boot JPA
- set fetch type menjadi LAZY untuk semua jenis association (one to one, one to many, many to one, many to many)
- untuk kebutuhan data fetch only, lebih baik menggunakan DTO (bukan select menggunakan entity). select ke entity di gunakan hanya jika ada keperluan untuk mengupdate entity tersebut.
- atau gunakan annotation @Transactional(readOnly = true) untuk entity yang hanya di inginkan untuk readOnly
- jangan enable property berikut, spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true lebih baik menggunakan annotation @Transactional di level service.
Pustaka :
- https://vladmihalcea.com/the-best-way-to-map-a-projection-query-to-a-dto-with-jpa-and-hibernate/
- https://vladmihalcea.com/the-hibernate-enable_lazy_load_no_trans-anti-pattern/
- https://thorben-janssen.com/dto-projections/
- https://vladmihalcea.com/spring-read-only-transaction-hibernate-optimization/
- https://www.baeldung.com/hibernate-entity-lifecycle