스프링 부트와 JPA 활용1 - 도메인 분석 설계 3 (2)

JOY·2022년 3월 16일
0
post-thumbnail

📌 스프링 부트와 JPA 활용1 - 도메인 분석 설계 3 (2)

인프런 - 스프링 부트와 JPA 활용1 by 김영한 을 기반으로 작성된 글입니다.
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발


도메인 분석 설계 목차

1. 요구사항 분석

2. 도메인 모델과 테이블 설계

3. 엔티티 클래스 개발1

4. 엔티티 클래스 개발2

5. 엔티티 설계시 주의점


도메인 분석 설계

4. 엔티티 클래스 개발2 (2)

1) 주소값 타입 (Address.java)

💻 코드

package jpabook.jpashop.domain;

import lombok.Getter;

import javax.persistence.Embeddable;

/*JPA의 내장타입*/
@Embeddable
@Getter
public class Address {

    private String city;
    private String street;
    private String zipcode;

    /*설명*/
    protected Address() {
    }

    public Address(String city, String street, String zipcode) {
        this.city = city;
        this.street = street;
        this.zipcode = zipcode;
    }
}

👉 설명

  • 주소 값 타입
    @Getter만 제공해 값타입을 변경 불가하게 설계해야함 (@Setter 제거)
    생성자에서 값을 모두 초기화 해 변경 불가능한 클래스로 생성

  • 기본 생성자를 만들어야 하는 이유
    JPA 구현 라이브러리가 객체 구현 시 리플렉션 같은 기능을 사용할 수 있도록 지원해야함
    💡 기본 생성자가 없으면 기능을 사용 못하므로 생성자 생성

  • 주소 값 타입 JPA 접근지정자
    public은 많은 사람들이 호출 할 수 있으므로 더 안전한 protected 사용
    ( JPA 스펙에서는 public과 protected 까지 허용 )



❗❓ 생성된 쿼리문을 그대로 사용해도 되나요?!

  • 그대로 사용하면 안됨
    참고 하여 DDL 스크립트를 검증하고 다듬어 사용 !
profile
Just Do IT ------- 🏃‍♀️

0개의 댓글