JPA
[JPA] @OneToMany 단방향을 사용하면 안되는 이유
[JPA] @ManyToOne, @OneToMany 뭘 써야할까? 편에서 단방향, 양방향 맵핑에 대해서 다뤘었죠! 그리고 분명 단방향만으로 충분한 경우에는 굳이 양방향 맵핑을 안하는게 좋다고도 했는데... 사실 단방향 중에 @OneToMany 맵핑으로만 이루어진 단방향 맵핑은 사용하지 않는게 좋습니다. 뭐야?!? 단방향 쓰라더니 왜 또 쓰지 말라는거야 ㅡㅡ 라고 하실 수도 있지만.. 여기에는 당연히 이유가 있습니다. 어떤 문제가 있는지, 해결방법은 없는지 지금부터 한번 알아보겠습니다! @OneToMany 단방향 세팅 우선 Classroom, Student로 @OneToMany 단방향 맵핑을 구현해보겠습니다. // Classroom 엔티티 @NoArgsConstructor @Getter @Entity pu..
[JPA] 일반 Join과 Fetch Join의 차이
Spring Data JPA(이하 줄여서 JPA)를 사용하다보면 연관 관계 맵핑이 된 엔티티를 사용하면서 N+1의 문제를 마주하고는 합니다. 예를 들어 우리가 보통 DB에서 연관 맵핑 관계를 볼때는 join 문을 사용해서 쿼리를 만들지만 이상하게 JPA repository로 엔티티를 호출하면 연관된 맵핑만큼 select 쿼리가 만들어집니다 바로 N+1번 쿼리가 진행되는것이죠. 이때 보통 아래 코드처럼 fetch join 이 들어간 JPQL 코드를 작성해서 문제를 해결합니다 @Query("SELECT distinct t FROM Team t join fetch t.members") public List findAllWithMemberUsingFetchJoin(); 왜 일반 join으로는 해결을 못할까요? ..
[Spring] JPA, Hibernate, Spring Data JPA 는 다르다!
혹시 JPA에 대해 이런 경험이 있으신가요? A: 어? JPA 저도 쓰는데요 그거 완전 편하죠 ㅎㅎㅎ 막 findBy어쩌구하면 DB에서 다 찾아주잖아요 나: 아 그래요? (구글검색) J..P..A..란..? -> JPA란 "자바 ORM에 대한 API 표준 명세"이다. 나: 아니 API 도 아니고 그냥 표준 "명세"라는데 그걸 쓸수가 있나..? 나: J..P.....A 사용법 검색 -> 안녕하세요 잇님들 요즘 날씨가 쌀쌀하죠^^ 오늘은 JPA를 사용해보는법에 대해서 알아볼거에요. 이렇게 설정해주세요 #JPA 설정 #하이버네이트 Dialect (사투리) 설정 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDBDialect #하이버네이트..