728x90

JPA

자바 진영의 ORM 기술 표준 프레임워크

애플리케이션과 JDBC 사이에서 동작

애플리케이션을 SQL 중심이 아닌 객체 중심으로 개발할 수 있게 도와줌

대표적인 JPA의 구현체는 하이버네이트가 있음

ORM

Object - Relational Mapping

객체와 관계형 데이터베이스 간의 차이를 중간에서 해결해주는 프레임워크

객체와 관계형 데이터베이스를 매핑한다는 뜻

 

직접적인 SQL 사용의 단점

  • 데이터베이스는 데이터 중심의 구조를 가지기 때문에 객체 구조와는 다름
  • 구조가 다르기 때문에 객체를 데이터베이스에 직접적으로 저장 및 조회 불가능
  • 개발자가 직접 변환 작업을 해줘야 함
  • 위와 같은 작업을 위해서 반복적으로 작성해야 할 코드가 너무 많음
  • SQL 중심의 개발로 인해 코드의 수정이 필요한 경우 변경해야 할 코드가 많음
  • 객체와 엔티티가 강한 의존 관계를 가지고 있음 (엔티티를 신뢰할 수 없음)
  • 같은 로우를 조회할 때마다 같은 인스턴스를 반환하도록 구현하기 쉽지 않음

JPA 사용의 장점

  • SQL 중심의 개발이 아닌 JPA  API를 사용하여 개발
  • 매핑 정보를 바탕으로 메서드 호출로만 적절한 SQL문을 수행해줌
  • 객체의 저장, 조회, 수정 등도 간단하게 가능
  • 객체와 데이터베이스 간의 구조 불일치를 중간에서 처리해 줌(패러다임 불일치)
  • 즉, 데이터베이스 구조에는 없는 자바의 상속, 참조 같은 객체지향 개념을 자동으로 처리해준다는 것
  • 연관된 객체를 사용하는 시점에 적절한 SQL문을 사용하여 연관된 객체를 신뢰할 수 있음
  • 같은 트랜잭션인 경우 같은 객체가 조회되도록 보장
  • 반복적인 코드와 SQL문을 개발자가 직접 작성할 필요가 없어 생산성을 향상 시킴
  • SQL과 JDBC와의 의존성이 떨어져 유지보수가 편함
  • 애플리케이션과 DB 사이에서 동작하여 성능 최적화 기회가 있음
  • 마찬가지로 사이에서 추상화된 데이터 접근 계층을 통해 사용하는 DB가 바껴도 DB만 변경하면 됨
  • 즉, 특정 DB 기술에 종속되지 않음

더 알아보면 좋은 내용

MyBatis

Spring JdbcTemplate

Hibernate

JDBC

'Back-End > JPA' 카테고리의 다른 글

엔티티 매핑 : 학습을 위한 스키마 자동 생성하기  (0) 2023.06.19
엔티티 매핑 : 매핑 어노테이션  (0) 2023.06.19
영속성과 엔티티  (0) 2023.06.01
JPA 시작하기  (0) 2023.06.01
엔티티 매핑 기본  (0) 2023.05.31

+ Recent posts