JPA

Jeong·2022년 10월 4일
0
post-custom-banner

데이터베이스

  • 관계형 데이터베이스는 어떻게 데이터를 저장할지에 초점이 맞춰진 기술

객체지향 프로그래밍 언어

  • 메시지를 기반으로 기능과 속성을 한 곳에서 관리하는 기술

패러다임 불일치 문제 발생

  • 관계형 데이터베이스와 객체지향 프로그래밍 언어의 패러다임이 서로다른데 객체를 데이터베이스에 저장하려고 하니 문제 발생
  • JPA는 서로 지향하는 바가 다른 2개 영역을 중간에서 패러다임 일치를 시켜주기 위해 등장
  • 즉, 개발자는 객체지향적으로 프로그래밍을 하고, JPA가 이를 관계형 데이터베이스에 맞게 SQL을 대신 생성해서 실행함

JPA(Java Persistence API)

  • JAVA에서 ORM(Object-Relational Mapping)기술 표준으로 사용되는 인터페이스의 모음
  • 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스
  • ex) Hibernate, EclipseLink

  • JPA는 애플리케이션과 JDBC 사이에서 동작함
  • 개발자가 JPA를 사용하면, JPA 내부에서 JDBC API를 사용하여 SQL을 호출하여 DB와 통신함

ORM(Object Relational Mapping)

객체는 객체대로, 관계형 데이터베이스는 관계형 데이터베이스대로 설계
객체와 테이블을 매핑해서 패러다임의 불일치를 개발자 대신 해결해줌

왜 JPA?

데이터베이스를 쓰지 않는 웹 애플리케이션은 거의 없음.
그러다 보니 객체를 관계형 데이터베이스에서 관리하는 것이 중요함
-> 관계형 데이터베이스가 계속해서 웹 서비스의 중심이 되면서 모든 코드가 SQL 중심적인 개발로 되어버리는 문제 발생
이를 해결하기 위해 JPA를 사용

1. 생산성

  • JPA를 자바 컬렉션에 객체를 저장하듯 JPA에게 저장할 객체를 전달
  • INSERT SQL을 작성하고 JDBC API 사용하는 지루하고 반복적인 일을 JPA가 대신 처리해줌
  • CRUD쿼리 자동 생성
  • 데이터베이스 설계 중심의 패러다임을 객체 설계 중심으로 역선

2. 유지보수

  • 엔티티에 필드 추가시 등록, 수정, 조회 관련 코드 모두 변경
  • JPA를 사용하면 이런 과정을 JPA가 대신 처리
  • 즉, 개발자가 작성해야 할 SQL과 JDBC API 코드를 JPA가 대신 처리해줌으로 유지보수해야 하는 코드 수가 줄어듦

3. 패러다임의 불일치 해결

  • 상속, 연관관계, 객체 그래프 탐색, 비교하기 같은 패러다임 불일치 해결

4. 성능

  • 다양한 최적화 기회 제공
  • 어플리케이션과 데이터베이스 사이에 존재함으로 여러 최적화 시도 가능

5. 데이터 접근 추상화와 벤더 독립성

참고

https://dbjh.tistory.com/77
https://ultrakain.gitbooks.io/jpa/content/chapter1/chapter1.3.html
https://gmlwjd9405.github.io/2019/08/04/what-is-jpa.html

profile
화이팅!!
post-custom-banner

0개의 댓글