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 |