JPA - Transient

@Transient

엔티티 클래스에서 특정 필드를 DB와 매핑하지 않도록 하며, 저장/조회 시 무시된다.

  • INSERT, UPDATE, SELECT 쿼리에 포함되지 않는다.

  • 컬럼으로 생성되지 않는다.

  • 런타임 동안 엔티티 객체의 임시 데이터를 저장하거나 계산된 값을 저장하는데 유용하다.

  • DB와 관련이 없는 비지니스 로직이나 DTO 변환에 사용되는 값들을 저장할 때 활용된다.

@Entity
public class Order {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private int quantity;

    private double pricePerUnit;

    @Transient
    private double totalPrice; // 데이터베이스와 매핑되지 않음

    public double getTotalPrice() {
        return this.quantity * this.pricePerUnit;
    }
}

영속성 컨텍스트와의 관계

@Transient 필드는 JPA가 관리하지 않으므로 영속성 컨텍스트에서 변경 상태를 추적하지 않는다.

DTO 변환 시 사용

DB 매핑이 필요 없는 값을 포함해야 할 경우 유용하게 사용할 수 있다.

조회 성능 최적화

데이터베이스에서 필요하지 않은 컬럼은 @Transient로 처리하여 불필요한 데이터 조회를 방지한다.

Last updated