본문 바로가기

개발 - Coding/Java & Spring4

[JPA] @OneToOne 관계와 UNIQUE 제약조건 @OneToOne 관계에 대해서 JPA에서는 일대일 연관관계를 맺는 엔티티를 표현하기 위해서 @OneToOne 애노테이션을 지원합니다. 일대일 연관관계에 대해서 JPA는 문서에서 3가지 예시 케이스를 제공하고 있습니다. FK 컬럼을 매핑하는 일대일 연관관계 PK를 공유하는 일대일 연관관계 Embeddable 클래스를 통한 일대일 연관관계 각각의 케이스를 예제로 살펴보면 다음과 같습니다. FK 컬럼을 매핑하는 일대일 연관관계 // On Customer class: @OneToOne(optional=false) @JoinColumn( name="CUSTREC_ID", unique=true, nullable=false, updatable=false) public CustomerRecord getCustomer.. 2024. 4. 8.
[JPA] 컴파일시에는 발견할 수 없는 @Enumerated와 @Embeddable 오류 문제 상황 JPA 환경에서 Enum 타입에 실수로 @Embeddable 또는 @Embedded Annotation을 적용했을 때 생기는 오류에 대해서 알아보겠습니다. 이 문제는 @Enumerated가 적용된 Enum에 @Embeddable이나 @Embedded를 사용하기 때문에 발생합니다. Java의 Enum과 JPA에서의 Enum Java에는 Enum 타입이 있고 이를 이용해서 더 명시적이고 의미론적인 코드를 짤 수 있습니다. 예를 들어 다음과 같이 활용할 수 있습니다. Enum을 적용하여 코드를 개선하는 예제 먼저 단순하게 String을 이용하여 멤버십 레벨을 다루는 코드입니다. package com.example.EnumTest; import lombok.*; import javax.persiste.. 2023. 6. 1.
[JPA] Spring Boot JPA Query Creation JPA Query Creation JPA를 이용해서 코딩할 경우, interface에서 적절히 메서드 이름을 지정하는 것 만으로 query method를 만들 수 있다. 예시는 다음과 같다. // Question Entity import lombok.Getter; import lombok.Setter; import javax.persistence.*; import java.time.LocalDateTime; import java.util.List; @Getter @Setter @Entity public class Question { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @Column(length = 200).. 2022. 7. 6.
[Spring Boot] 스프링 @Configuration 모듈화하기 스프링에서 @Configuration 모듈화하는 상황 스프링 프로젝트에서 비즈니스 로직을 구현할 때, 다형성을 적극 활용하면 좋은 경우가 있다. 예를 들어서 할인 정책을 적용할 때, 상황에 따라서 정해진 금액을 할인하는 정책과 정해진 비율을 할인하는 정책을 선택해야 하는 경우가 있다. 또는 멤버십 유형을 선택하여 유형마다 제공받을 수 있는 서비스들이 달라지는 경우에도 멤버십 객체의 역할과 구현을 분리할 수 있다. 이런 경우에는 별도의 설정 정보를 만들어서 @Configuration을 따로 관리하는 것이 좋다. 그렇다면 이 경우에 @Configuration을 여러 개 만들게 되면 이것들을 어떻게 관리하는 것이 좋을까? 반대로 하나의 @Configuration에 모든 설정 정보가 들어있는 상황에서 이것들을 .. 2022. 6. 29.