You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
JPA ORM을 너무 맹신하지는 말자 아직까지도 ORM을 쓰는게 좋다 아니다로 찬반이 많이 나오고있고, 실무에 들어가자마자 쿼리문 작성하는 걸 제일 먼저 배울 정도로 JPA로 작성하는걸 지양하는 회사들이 많음 오알엠은 양날의 검 ..
JPA ORM 장점
JPA는 쿼리를 자바처럼 짤 수 있음
DB를 교체해도 코드를 바꿀 필요가 없음 (DB 추적해서 그에맞는 쿼리문으로 바꿔줌)
JPA ORM 단점
에러지옥 .. 뭐 조금만 잘못해도 에러를 내보낸다
jpa의 쿼리 성능이 괜찮은지 체크하고 리팩토링해야하는 경우가 있다 → 그럼 결론적으로 그냥 내가 쿼리를 짜는게 나을지도 ? 라고 생각하는 사람들이 있음
또 뭐 실행계획 ? 이라는 것 때문ㅇ ㅔ ORM을 기피하는 경우도 있다고 한다.
암튼 그래서 아직까지도 찬반논쟁에 있다고 함 ~
그리고 연관관계 맵핑할 때 양방향 vs 단방향 논쟁도 있음
양방향을 썻을 때는 비지니스로직 부분에서 쿼리를 1번만 요청해도 되지만, 단방향을 썻을 때는 2번을 보내야 한다 .. 등 코드가 조금 길어질 수 있음
하지만 양방향은 !! 가끔 무시무시한 상황을 초례할 수 있다 .. 예를 들어 순환 참조 즉 무한 재귀를 돌면서 스택에 쌓이면 스택오버플로우 에러가 난다 .. 아웃오브메모리 .. 그럼 메모리가 터지면서 서버가 종료되는데 실무에서는 이게 너무 위험한 에러라 양방향을 피하는 회사들이 많다고 한다.
🤯 문제점
각각의 게시글에 등록된 모든 댓글을 게시글과 같이 Client에 반환하기 구현 과정
👩🏻💻 시도해본 것들
@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class)
@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class)
이 코드를 추가해주니까 순환참조가 멈췄다.🥕 해결 방법
수정 전 코드
수정 후 코드
✔️ 알게 된 점
The text was updated successfully, but these errors were encountered: