이 예제를 이해하기 위한 개념
https://un-lazy-midnight.tistory.com/102
JPA | 기본값 타입과 임베디드 타입이란?
JPA의 데이터 타입 분류 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 int, String처럼
un-lazy-midnight.tistory.com
https://un-lazy-midnight.tistory.com/103
JPA | 값 타입은 변경이 가능할까? 불변 객체(immutable object)란? (+ 값 타입을 비교하는 방법)
지난 글에서는 값 타입에 대해 알아보았다. https://un-lazy-midnight.tistory.com/102 JPA | 기본값 타입과 임베디드 타입이란? JPA의 데이터 타입 분류 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도
un-lazy-midnight.tistory.com
https://un-lazy-midnight.tistory.com/104
JPA | 값 타입 컬렉션이란? (저장, 조회, 수정 예제 및 주의사항)
값 타입 컬렉션이란? 값 타입을 하나 이상 저장할 때 사용한다. 컬렉션을 저장하기 위한 별도의 테이블이 필요하다. 데이터베이스는 컬렉션을 같은 테이블에 저장할 수 없다. @ElementCollection, @Coll
un-lazy-midnight.tistory.com
지난 예제
https://un-lazy-midnight.tistory.com/105
JPA | 예제로 알아보는 영속성 전이 (예제 - 5)
예제 - 5 https://un-lazy-midnight.tistory.com/98 JPA | 예제로 알아보는 상속관계 매핑 (예제-4) 지난 글: https://un-lazy-midnight.tistory.com/96 JPA | 예제로 알아보는 연관관계 매핑 (예제-3) 예제 코드) https://un-lazy-mi
un-lazy-midnight.tistory.com
지난 예제에 이어서 값 타입을 매핑해보자.
이번 예제에서는 Address 라는 값 타입을 사용하려고 한다.
기존 연관관계는 아래와 같다.
예제 코드는 다음과 같다.
Address를 값타입으로 사용하고 Member와 Delivery에 매핑한다.
Address.java
@Embeddable
public class Address {
//rule을 공통으로 쓸 수 있다. 예) 길이 설정
@Column(length = 10)
private String city;
@Column(length = 20)
private String street;
@Column(length = 5)
private String zipcode;
public String fullAddress(){
return getCity()+ " " + getStreet() + " " + getZipcode();
}
public Address(String city, String street, String zipcode) {
this.city = city;
this.street = street;
this.zipcode = zipcode;
}
public String getCity() {
return city;
}
private void setCity(String city) {
this.city = city;
}
public String getStreet() {
return street;
}
private void setStreet(String street) {
this.street = street;
}
public String getZipcode() {
return zipcode;
}
private void setZipcode(String zipcode) {
this.zipcode = zipcode;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Address address = (Address) o;
return Objects.equals(getCity(), address.getCity()) && Objects.equals(getStreet(), address.getStreet()) && Objects.equals(getZipcode(), address.getZipcode());
}
@Override
public int hashCode() {
return Objects.hash(getCity(), getStreet(), getZipcode());
}
}
Member.java
@Entity
public class Member {
@Id
@GeneratedValue
private Long id;
@Column(name="USERNAME")
private String name;
@Embedded
private Address address;
...
}
Delivery.java
@Entity
public class Delivery {
@Id @GeneratedValue
private Long id;
@Embedded
private Address address;
...
}
'💻dev > 🌱Java+Spring' 카테고리의 다른 글
JPA | JPQL 문법 뿌시기 - 기본 문법, 쿼리 API (0) | 2023.05.03 |
---|---|
JPA | 객체지향 쿼리 언어 간단 소개 (JPQL, Criteria, QueryDSL 등) (0) | 2023.05.02 |
JPA | 예제로 알아보는 영속성 전이 (예제 - 5) (0) | 2023.05.02 |
JPA | 값 타입 컬렉션이란? (저장, 조회, 수정 예제 및 주의사항) (0) | 2023.05.02 |
JPA | 값 타입은 변경이 가능할까? 불변 객체(immutable object)란? (+ 값 타입을 비교하는 방법) (0) | 2023.05.02 |