Skip to content

Latest commit

 

History

History
58 lines (45 loc) · 2.39 KB

[승재] 1장.md

File metadata and controls

58 lines (45 loc) · 2.39 KB

JPA 소개

  • ORM : Object-Relational Mapping, 객체와 관계형 데이터베이스 간의 차이를 중간에서 해결
  • JPA : 자바 진영의 ORM 기술 표준

SQL을 직접 다룰 때 발생하는 문제점

  1. 진정한 의미의 계층 분할이 어렵다.
  2. 엔티티를 신뢰할 수 없다.
  3. SQL에 의존적인 개발을 피하기 어렵다.

=> JPA로 해결

패러다임의 불일치

패러다임 불일치

객체와 관계형 데이터베이스는 지향하는 목적이 서로 달라 둘의 기능과 표현 방법이 다르다.(상속, 연관관계, 객체 그래프 탐색 등...)

지연로딩

연관된 객체를 실제 사용하는 시점까지 데이터베이스 조회를 미루는 것. -> 연관 관계가 많을 경우 연관된 객체를 모두 사용하지도 않는데 전부 JOIN해와서 메모리에 두는 것은 비효율 적이므로!

만약 연관된 두 객체를 항상 함께 사용할 경우, 굳이 한 테이블 씩 조회하는 것보다 하나를 조회하는 시점에 SQL 조인을 사용해서 함께 조회하는 것이 효과적! 이것도 JPA의 간단한 설정을 통해 정의 가능!

User user = jpa.find(User.class, userId); // User만 select 조회
Team team = user.getTeam();
team.getName(); // Team을 실제 사용하는 이 시점에서 Team을 select 조회

비교

데이터 베이스는 기본 키(PK)값으로 각 ROW를 구분

객체는 동일성(identity) 비교와 동등성(equality) 비교라는 두 가지 비교 존재

  • 동일성 비교 : == 비교이다. 객체 인스턴스의 주소 값 비교
  • 동등성 비교 : equals() 메소드 사용. 객체 내부의 값을 비교

JPA는 같은 트랜잭션일 때 같은 객체가 조회되는 것을 보장

=> JPA는 패러다임의 불일치 문제를 해결해주고 정교한 객체 모델링을 유지하게 도와줌.

JPA란 무엇인가?

JPA란

JPA는 자바 진영의 ORM 기술 표준. 어플리케이션과 JDBC 사이에서 동작

ORM이란

이름 그대로 객체와 관계형 데이터베이스를 매핑한다는 뜻. ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결

왜 JPA?

  1. 생상성
  2. 유지보수
  3. 패러다임의 불일치 해결
  4. 성능
  5. 데이터 접근 추상화와 벤더 독립성
  6. 표준