[개념] JPA 많이 보이던데 왜쓰는거냐

SeoYehJoon·2024년 6월 29일
0

웹 개인공부

목록 보기
13/22

토이프로젝트에 기능추가를 하기위에 다른사람들 코드를 염탐하던중 JPA 라는 기술이 많이 보이기 시작했다. 분위기를 보니 좀 짠다하는 사람은 다짜는것 같던데 일단 DB를 객체화 하는것인건 대충 눈치껏 알겟는데 정확히는 뭔지 모르겠다.

https://www.youtube.com/watch?v=WfrSN9Z7MiA&list=PL9mhQYIlKEhfpMVndI23RwWTL9-VL-B7U&index=1&ab_channel=SKplanetTacademy
유튜브 우아한 형제 김영한님 JPA 강의

https://hstory0208.tistory.com/entry/JPA-%EC%97%B0%EA%B4%80%EA%B4%80%EA%B3%84-%EB%A7%A4%ED%95%91-%EC%A3%BC%EC%9D%B8%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-mappedBy
연관관계 매핑 매뉴얼




DB설계 변경


위코드처럼 중간에 tel이라는 속성을 추가하면 이미 짜놓은 sql을 수정해야 하는 상황이 온다.

엔티티 신뢰의 문제


위 사진에서 멤버 객체를 받아오면 당연하게 그안에 멤버의 팀정보, 주문정보 등등을 '객체지향'적으로 받아올 수 있다고 하지만 사실은 그렇지 않다고 설명하신다.

연관관계 차이


객체에서는 Member.getTeam은 되지만 Team.getMember는 안됨
테이블 연관관계에서는 Member에서나 Team에서나 Join을 통해 서로의 요소를 참조 할 수 있다.

현업에서 개발시 이런식으로 teamId를 넣는다 왜냐?

이런식으로 설계된 테이블에 값을 한번에 넣기 위해 그런데 영한님은 이것은 '객체지향'적이지 못하다고 설명하신다.

자유로운 탐색의 어려움


위 표처럼 관계가 있다고 치면 ( . )을 찍고 바로 참조 할 수 있어야 한다 JPA를 쓰지않으면 아래처럼 만들어야 하는 경우의 수가 너무 많아진다.





------------일때까지의 문제점은 아래와 같은 질문을 낳는다.---------


그래서 나온게 JPA 라고 한다.
( 이제야 왜쓰는지 이해가 되네 )

JPA는 자바진영에서 쓰는 'ORM'기술이다.

ORM기술은 대부분의 언어에서 존재한다. 아주 오래 전부터 DB와 객체간의 매핑에 대해 고민했다고 한다.

EJB라는 구시대 ORM이 있었는데 이건 너무 불편해서 안쓴다.. JPA는 인터페이스일 뿐이고 그 구현체인 하이버네이트를 쓴다(JPA인터페이스는 하이버네이트의 복붙일 뿐이라고 한다)(참고로 EJB는 컨테이너 기능도 있었는데 이게 너무 불편해서 나온게 Spring이라고 한다)

profile
책, 블로그 내용을 그대로 재정리하는 것은 가장 효율적인 시간 낭비 방법이다. 벨로그에 글을 쓸때는 직접 문제를 해결한 과정을 스크린샷을 이용해 정리하거나, 개념을 정리할때는 최소2,3개소스에서 이해한 지식을 정리한다.

0개의 댓글