어느정도 JPA 기본에 대하여 공부를 했다 ..
아직 갈 길은 멀었지만 포기하지 않고 끝까지 공부한게 뿌듯하다
지금까지 공부한 내용으로
JPA 엔티티를 사용할 때 주의할 점을 정리해보자 한다.
Setter 사용 가급적 금지
지연로딩을 사용할 것 !
지금까지 공부한 것 중에 손에 꼽을 정도로 중요한 것 같다.
JPA에는 즉시로딩과 지연로딩이 있다.
간략하게 설명하자면
- 즉시로딩 : 데이터를 조회할 때 관련 있는 데이터를 모두 조회
- 지연로딩 : 실제로 해당 데이터를 사용할 때 조회
실무에서는 프로젝트의 규모가 크다보니 즉시로딩으로 구현하게 될 경우 성능이슈가 크게 발생할 것이다. 따라서 지연로딩을 사용하도록 하자
@_ToOne 어노테이션은 기본이 즉시로딩( FetchType.EAGER ) 로 되어 있다.
(ex: @OneToOne, @ManyToOne)
해당 부분을 무조건 LAZY로 변경하여 사용하자
연관관계 메서드(양방향)
DB 로직상 연관관계의 주인에서 등록해준다.
DB에서 저장/수정은 Order만 하면 되지만, 로직 상에서 Member에서도 Order의 데이터를 사용하고, Order에서 Member의 데이터를 사용할 수 있기 때문에 편의 메서드를 따로 만들어서 사용해주자.
//Member.java
@OneToMany(mappedBy="member")
private List<Order> orders = new ArrayList<>();
//====================================================
//Order.java
``` java
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="member_id") //FK이름 >> member_id가 됨.
private Member member;//FK
//(실행코드)
//==연관관계 메서드==
public void setMember(Member member){
this.member = member;
member.getOrders().add(this);
}
```
JPA에서 편리성을 위하여 제공해주지만, 엔티티 설정 시 유의할 것이 많은 것 같다.
주의해서 사용하도록 하자.