220921_TIL : 자바 ORM 표준 JPA 프로그래밍 - 기본편

백승한·2022년 9월 21일
0

스프링

목록 보기
6/14

11:40

객체 세상에서 Member 에서 Team으로 갈 수 있다. 반대로 Team에서 Member로는 갈 수 없다. 그 이유는 참조가 없기 때문이다.

테이블 세상에서는 JOIN 을 통해 반대로도 갈 수 있다.

즉, 객체는 한 방향으로 흐르고 테이블은 서로 왔다갔다 할 수 있다.

19:00 레이어드 아키텍처 (엔티티 신뢰 문제)

그 다음 계층에서 신뢰를 한 상태에서 사용한다. 물리적으로는 service, dao 등으로 나뉘어져있지만 논리적으로는 신뢰가 가지 않는다.

그래서 개발자들은 계속해서 고민해 왔다.
객체를 자바 컬렉션에 저장 하듯이 DB에 저장할 수는 없을까?
그 고민의 결과가 바로 JPA (Java Persistance API)

JPA를 왜 사용해야 하는가?

  • SQL 중심적인 개발에서 객체 중심으로 개발
  • 생산성
  • 유지보수
    • 기존 : 필드 변경시 모든 SQL 수정해야하는 불편함
    • JPA : 필드만 추가하면 됨, SQL은 JPA가 처리 ( 개발에 집중 가능 )
  • 패러다임의 불일치 해결
    • JPA와 상속
    • JPA와 연관관계
    • JPA와 객체 그래프 탐색
    • JPA와 비교하기
  • 성능
    • 1차 캐시와 동일성(identity) 보장
    • 트랜잭션을 지원하는 쓰기 지연(transactional write-behind)
      - 메모리에 쌓았다가 커밋되는 순간 한번에 네트워크를 사용해서 쫙 보낸다.
    • 지연 로딩(Lazy Loading)
  • 데이터 접근 추상화와 벤더 독립성
  • 표준

JPA 구동 방식

주의

• 엔티티 매니저 팩토리는 하나만 생성해서 애플리케이션 전체에서 공유
• 엔티티 매니저는 쓰레드간에 공유X (사용하고 버려야 한다).
• JPA의 모든 데이터 변경은 트랜잭션 안에서 실행

profile
방문해주셔서 감사합니다🙂

0개의 댓글