JPA

SpringBoot 2.0부터 HikariCP가 디폴트가 된 이유SpringBoot 2.0 이전 버전까지는 tomcat-jdbc pool을 사용했지만 스프링부트 2.0 이후 버전부터는 HikariCP를 기본으로 사용되도록 변경되었습니다. 위의 성능 그래프를 보시는 것처럼 다른 오픈소스보다 성능적으로 우수하다는 것을 알 수 있습니다. 이로 인해 스프링부트는 애플리케이션 기동 시 더 빠른 초기화 속도와 높은 처리량을 제공할 수 있게 되었습니다. HikariCP가 경량화된 빠른 속도와 높은 성능으로 유명한 이유는 다음과 같습니다.매우 적은 메모리를 사용해 초기화 및 연결 시간이 짧다.빠르게 연결을 생성하고 반환하기 때문에 처리량이 매우 높다.코드 베이스가 작기 때문에 구성이 간단하다.다양한 구성 옵션을 제공해..
org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags n+1 문제로 인한 성능 저하 현상을 방지하기 위해 엔티티의 연관관계를 Lazy로 전부 발라놓은 뒤 필요한 상황에 fetch join을 사용하여 객체 그래프로 묶어서 가져오려고 했으나 오류가 발생 하였습니다. fetch join을 만능으로 생각하고 있었던지라 몹시 당황스러웠습니다. 오류의 원인 저는 다음과 같이 ToMany관계에 여러개의 fetchJoin을 적용하고 있어서 오류가 발생하였습니다. 기본적으로 JPA에서 Fetch Join의 조건은 다음과 같다고 합니다. ToOne은 여러개 사용 가능 ToMany는 1개만 사용 가능 Querydsl ..
개요 운영 데이터에서 생성 시간과 수정 시간은 매우 중요한 정보입니다. 이 정보는 데이터의 변경 이력을 추적하고 유지보수에 도움을 주는데 핵심적인 역할을 합니다. 이번 포스팅에서는 생성 시간과 수정 시간을 JPA Auditing을 활용하여 자동화하는 방법에 대해 정리해 보았습니다. 제가 실무에서 마이바티스를 사용하던 시절에는 주로 SYSDATE와 같은 SQL 함수를 사용하여 생성 시간과 수정 시간을 처리했었습니다. 하지만 Spring Data JPA를 사용한다면 JPA Auditing을 활용하여 이러한 작업을 자동화할 수 있습니다. JPA Auditing은 Java Persistence API의 기능 중 하나로, 엔티티의 생성 시간과 수정 시간을 자동으로 관리해주는 기능입니다. BaseEntity 클래스..
목표 영속성 전이(Cascade) 종류에 대해 알아보기 영속성 전이에 대해 알아보기 고아객체 영속성 전이(Cascade) 종류 ALL(모두적용) PERSIST(영속) REMOVE(삭제) MERGE(병합) REFRESH DETACH 영속성 전이 영속성 전이란? 특정 엔티티를 영속 상태로 만들때 연관된 엔티티도 함께 영속 상태로 만들고 싶을때 사용합니다. public class RentalApplyManage { @Id @GeneratedValue private Long rentalApplyId; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member member; @OneToMany(mappedBy = "rental..
proGun
'JPA' 태그의 글 목록