관심쟁이 영호

[#7.4] Spring Boot ㅣ 스프링 부트 ㅣ 작성한 Entity Class 점검, 기타 내용 본문

Bank-End/인프런- Spring 공부

[#7.4] Spring Boot ㅣ 스프링 부트 ㅣ 작성한 Entity Class 점검, 기타 내용

관심쟁이 영호 2021. 4. 9. 01:30
반응형

1. Getter와 Setter

실무에서는 Getter를 이용하여 데이터 조회를 하는 경우가 상당히 많다.

그래서 Getter를 열어두지 않으면 많이 힘들다. 그래서 열어두는 것이 좋다.

 

반면에, Setter는 데이터를 잘못 바꾸는 경우가 있어서 열어두었다가

어느 부분에서 어떻게 데이터가 업데이트 되었는지 파악하기가 힘든 경우가 있다.

그래서 꼭 필요한 경우가 아니라면 Setter를 닫아두는 것을 추천하신다.

-> 변경전용 비지니스 메서드가 필요하다.

 

2. 엔티티 식별자

엔티티의 식별자는 id, PK 컬럼명은 member_id를 사용해주는 이유는,

엔티티는 타입이 있어서 id필드 만으로 쉽게 구분할 수 있지만, 테이블은 타입이 없다.

그래서 구분이 상당히 힘들다.

그리고 관례상 테이블은 테이블명 + id를 사용한다.

 

3. 값 타입

값 타입은 변경 불가능하게 설계해야한다. 그래서 @Setter를 사용하지 않는다.

생성자를 이용하여 최초에 입력을 한다.

 

※ 이 코드들을 나중에 다듬고, 다시 공부해야한다. 

 

 

주의점

1. Setter는 신중하게.

 

2. 모든 연관관계는 지연로딩으로 설정

 - 이게 무슨 뜻이냐면, 

즉시로딩: Member를 조회하면 연관된 모든 것을 조회하는 것이다.

즉시로딩을 사용하면 예측이 어렵고, 어떤 SQL을 가지고 오는지 파악하기가 힘들다.

그래서 코드를 EAGER -> LAZY로 바꾸어 주어야 한다.

 

 - @ToOne(fetch = FetchType.LAZY)를 지정해주어야 한다.

 

3. 컬렉션은 필드에서 초기화하자

- 생성자로 초기화 할지, 바로 초기화할지 고민일 때, 말이다.

 

- 필드에서 넣으면 null문제도 좋고, 그리고 하이버네이트가 제공하는 내장 컬렉션으로 변경한다.

 

해당 강의는 인프런의 "김영한" 개발자님의 강의 정리했습니다.

www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-%ED%99%9C%EC%9A%A9-1/dashboard

 

 

 

300x250
Comments