JPA Embedded 활용/ 패스트캠퍼스 챌린지 30일차

망고쥬스·2021년 11월 30일
0

드디어 챌린지 마지막 날

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

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

https://bit.ly/3FVdhDa

profile
#newbieDeveloper #since 2021.04.06

0개의 댓글