티스토리 뷰

Spring/JPA

JPA (Java Persistence API)

snail voyager 2020. 5. 24. 21:24
728x90
반응형

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

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

JPA

Java ORM(Object-Relation Mapping) 기술 표준 API
객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결
정교한 객체 모델링을 할 수 있고 객체지향 개발에 집중할 수 있다

  • 생산성 : SQL을 작성하고, JDBC API를 사용하는 반복적인 일을 JPA가 대신 처리
  • 유지보수 : JPA가 대신 처리해주므로 수정해야할 코드가 줄어듦
  • 패러다임의 불일치 해결 : 상속, 연관관계, 객체 그래프 탐색, 비교하기 해결
  • 성능 : 애플리케이션과 DB 사이에서 다양한 성능 최적화 기회 제공
  • 데이터 접근 추상화와 벤더 독립성 : 특정 DB 기술에 종속되지 않음

JPA vs MyBatis

  • MyBatis는 SQL Mapper. 객체와 SQL을 매핑하는 방식
  • JDBC API 사용과 응답결과를 객체 매핑하는 일은 대신 처리
  • 개발자가 SQL을 직접 작성. SQL에 의존하는 개발
  • JPA는 복잡한 쿼리보다 실시간 처리용 쿼리에 더 최적화
  • ORM 사용은 Entity에 맞는 테이블 생성
  • 기본적인 CRUD 자동화로 생산성 향상, 테스트 코드 작성 용이
  • 정교한 객체 모델링 설계와 객체지향 프로그래밍을 위해 ORM 사용
  • 복잡한 SQL을 작성하는 것은 QueryDSL 사용

JPQL vs SQL

  • JPQL(Java Persistence Query Language)로 필요한 데이터만 DB에서 조회. 검색 조건이 포함된 SQL 사용
  • JPQL은 엔티티 객체를 대상으로 쿼리
  • SQL은 DB 테이블을 대상으로 쿼리
728x90
반응형

'Spring > JPA' 카테고리의 다른 글

JPA 영속성 관리  (0) 2020.05.24
반응형
300x250