[Spring Boot] 스프링부트 (IntelliJ)/JPA

[JPA] 엔티티 설계시 주의점

류도토리 2024. 3. 27. 16:23

1. 엔티티에는 가급적 Setter를 사용하지 말자

 - Setter가 모두 열려있다면, 변경 포인트가 너무 많아서 유지보수가 어렵다.

 - Setter말고 같은 기능을 하는 메서드를 만들어서 사용한다.

 

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

 - 즉시로딩(EAGER)과 지연로딩(LAZY)이 있는데

 - 즉시로딩은 하나의 엔티티를 로딩할 때 연관 된 데이터를 모두 불러오는 것

 - 지연로딩은 필요한 시점에 연관된 엔티티의 데이터만 불러옴

 - 연관된 엔티티를 함께 DB에서 조회해야 하면, fetxh join 또는 엔티티 그래프 기능을 사용한다.

 - @OneToOne, @ManyToOne관계는 기본이 즉시로딩이므로 직접 지연로딩으로 설정해야 한다.

 

3. 컬렉션은 필드에서 초기화 한다.

 - null 문제에서 안전하다.

@OneToMany(mappedBy = "member")
private List<Order> orders = new ArrayList<>();

 - 다른 곳에서 가급적 수정은 하지 않는게 좋다.

 

4. 테이블, 컬럼명 생성 전략

 - 스프링 부트 신규 설정 (엔티티(필드) -> 테이블(컬럼)

1. 카멜케이스 -> 언더스코어 (memberpoint -> member_point

2. . -> _

3. 대문자 -> 소문자

'[Spring Boot] 스프링부트 (IntelliJ) > JPA' 카테고리의 다른 글

[JPA] CascadeType 영속성 전이  (0) 2024.03.27
[JPA] Mysql JPA 테이블 추가하기  (0) 2024.02.22
[JPA] 인텔리제이에서 간단하게 JPA 돌려보기  (0) 2024.02.21
[JPA] ORM  (0) 2024.02.07
JPA란?  (0) 2023.12.19