드디어 챌린지 마지막 날
JPA에서 Embedded 활용하기
주문시에 가격 필드가 있다
가격은 공급세, 부가세, 총가격 등이 있다고 할 수 있다.
즉 임베디드 타입을 사용하기에 적합하다고 할 수 있다.
주소 정보 또한 임베디드 타입을 사용하기에 적합하다고 할 수 있다.
단순 컬럼으로 주소값 추가해보자
UserEntity & UserHistory
private String city;
private String district;
private detail;
private zipCode;
Embeded 적용
AddressEntity
@Embeddable //Embedded을 할 수 있는 클래스임을 선언
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Address{
private String city; //시
private String district; //구
private String detail; //상세주소
private String zipCode; //우편번호
}
UserEntity
@Embedded
private Address address;
Result
@Test
void embeddedTest(){
userRepository.findAll().forEach(Sytstem.out::println);
}
console:
create table user(
//추가된 컬럼
city varchar(255),
detail varchar(255),
district varchar(255),
zip_code varchar(255),
...
> User(super=BaseEntity(createdAt=2021-06-.......), address = null
또한 Embedded 객체 내에서도 기존에 사용했던 @Column을 통해 컬럼 속성을 재정의 할 수 있다.
물론 nullable, column definition 도 일반 entity와 동일하게 사용할 수 있다.
Address Entity
@Column(name="address_detail")
private String detail;
result
console:
create table user(
...
address_detail varchar(255)
...
)
위와같이 컬럼이름이 detail > address_detail로 변경 된 것을 확인할 수 있다.
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는Java/Spring웹개발마스터초격차패키지Online
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.