2023/07 2

Spring 테스트할 때 @Transactional 써야 할까 말아야 할까

Spring으로 테스트코드를 작성하다 보면 한 번쯤은 이런 고민을 하게 된다. (안 했으면 죄송함다)“테스트에 @Transactional 붙여야 하나? 붙이면 자동 DB 데이터 rollback 되이서 편하긴 한데..” 어떤 글은 “무조건 붙여라”고 하고,어떤 글은 “절대 쓰지 말라”고 한다.그래서 더 헷갈린다. 결론부터 말하면 정답은 없다.대신 용도에 따라 명확히 갈린다. 이 글에서는@Transactional이 정확히 어떤 역할을 하는지테스트에서 사용할 때의 진짜 장점과 진짜 단점실무에서 언제 쓰고, 언제 피해야 하는지를 정리해보려고 한다.@Transactional 의미@Transactional은 Spring이 제공하는 선언적 트랜잭션 관리 어노테이션이다.해당 메서드(또는 클래스)는 트랜잭션 경계 안에서..

개발/Spring Boot 2023.07.30

JPA 복합키 @IdClass vs @EmbeddedId

JPA에서 복합키(Composite Key)를 매핑하는 방법은 크게 두 가지가 있다.@IdClass@EmbeddedId실제 서비스 코드 기준에서의 선택 기준을 정리해봤다.1. @IdClass 방식@IdClass는 엔티티 외부에 PK 클래스를 정의하고, 엔티티의 각 필드에 @Id를 붙여 매핑하는 방식이다.예시:@Entity @IdClass(MyId::class) class MyEntity( @Id val id1: Long,@Id val id2: Long, val name: String )data class MyId( val id1: Long, val id2: Long ) : Serializable 특징:PK 클래스는 Serializable 구현 필수엔티티 필드에 식별자가 그대로 노출됨JP..

개발/Spring Boot 2023.07.24