JPA save와 saveAll 비교(feat. @Transactional의 영향)
Backend/JPA2025. 4. 25. 11:41JPA save와 saveAll 비교(feat. @Transactional의 영향)

save()와 saveAll()이 같은 저장 기능을 수행하지만 성능에는 차이가 있고 @Transactional 사용 여부에 따라서도 다른 결과를 나타낸다. 이번 글에서는 이 둘의 내부 구조와 함께, @Transactional 유무에 따른 성능 차이를 실험과 함께 분석해보겠다.1. save()와 saveAll() 내부 구조JpaRepository의 기본 구현체인 SimpleJpaRepository의 내부를 보면 다음과 같다. save()@Transactional@Overridepublic S save(S entity) { Assert.notNull(entity, "Entity must not be null."); if (entityInformation.isNew(entity)) { ..

@ManyToOne의 Optional 속성에 따라 변경되는 JOIN 방식 (LEFT JOIN vs INNER JOIN)
Backend/JPA2025. 4. 19. 12:52@ManyToOne의 Optional 속성에 따라 변경되는 JOIN 방식 (LEFT JOIN vs INNER JOIN)

1. 상황과 문제점예시 Entitypublic class CategoryEntity extends BaseEntity { ... @Column(name = "name", nullable = false, length = 20) private String name; ... @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "parent_id") private CategoryEntity parentCategoryEntity; ...}예시 쿼리 메소드public interface CategoryJpaRepository extends JpaRepository { boolean existsByParentCategoryEn..

image