주의점 메모장

주의점 메모장
JPA 벌크연산에 대해서 조심하자
CreateQuery나 @Query등 이와 같은 것들로 데이터 베이스에 그대로 날리면 영속성 컨텍스트에 있는 것들은 그것이 바뀐지 모른다 르허기 때문에 이와 같이 벌크연산을 하게 되었다면 반드시 em.flush() 지연저장소에 쌓아놨던 쿼리문을 날려 DB와 영속성컨텍스트를 동기화 em.clear() 영속성 컨텍스트 내용 증발 을 해주어야 한다. 안그러면 영속성 컨텍스트에 있는 업데이트가 안된 내용이 조회가 된다. 이렇게 하면 clearAutomatically를 true clear따로 안해줘도 된다.

주의점 메모장
엔티티, 리스트를 직접 반환하지말라
이렇게 Entity를 직접 반환도 하지말자 예시를 들어보자 회원목록을 보려고 하는데 Member자체를 호출해버리면 거기에 딸린 orders까지 보인다 즉 정보를 조회하면 그 사람이 주문 한것까지 조회가 된다는것이다. 만약 다른사람이 어느 사람을 조회했는데 저렇게 된다면 별로 좋지 않을것이다. 그렇다고 이렇게 JsonIgnore를 쓰면 orders는 넘어가지 않을것이다. 하지만 또 문제점이 있다. 조회를 하는 함수는 여러개가 있는데 모든 조회함수들은 orders를 호출하지 못하는 문제가 생기며 추가적으로 Entity가 스팩이 변하면 또 문제도 생기는것이다. 그리고 List를 그대로 반환하면 기능 확장이 어렵다. DTO를 넣어서 List도 넣고 다른것도 넣고 해서 유연하고 안전하게 가져가자 이것도 DTO를 ..