객체지향언어인 자바에서는 객체를, 데이터를 다루는 관계형 데이터베이스에서는 테이블을 다룬다. 필요한 정보를 가져오고 싶을 때는 테이블 형태의 데이터를 객체의 형태로 집어넣어야 하고 정보를 집어넣을 때는 객체 형태의 데이터를 테이블 형태로 집어넣어야한다. 수정, 삭제 또한 객체와 테이블사이의 변환이 필요하다. (즉, CRUD기능)
예를 들면, 상속관계, 연관관계 등에서 객체와 관계형데이터베이스는 표현 방식이 다르기에 일일이 각 상황에 맞게 표현을 해주어야 한다.
JDBC를 이용해서 직접 sql을 짤 때 하나의 함수를 짜는데도 많은 시간이 소요된다. 여러 함수를 짜려면 더 많은 시간이 소요될 것이다.
이를 위한 것이 ORM(ObjectRelationalMapping) 프레임워크이다. ORM 프레임워크는 객체와 테이블 사이의 특정 코드만 사용함으로서 매핑을 알아서 해준다. 즉, 이전처럼 자바에서 JDBC로 일일이 sql을 짜줄 필요가 없이 ORM프레임워크가 알아서 다한다. 예를들면 insert나 select 할 때 객체에 맞게 JDBC API로 적절히 insert,select sql을 작성하하여 관계형 데이터 베이스에서 값을 삽입하고 검색한다 .
이는 개발시간에 있어 관계형 데이터베이스와 관련하여 시간을 너무 빼앗기는 문제를 해결한다.
자바에서 사용되는 ORM 프레임워크로는 대표적으로 Hibernate, EclipseLink, DataNucleus 가 있다.
여기서 이제 JPA에 대해 설명하자면 JPA는 자바 ORM 기술에 대한 API 표준 명세이다. 즉, 자바용 ORM기술 표준이고 ORM 프레임워크들을 모아둔 interface 이다. 그래서 JPA를 사용하려면 JPA를 구현한 ORM 프레임워크를 선택해서 사용해야 한다. 대부분 Hibernate를 많이 사용한다.
JPA의 장점을 간략히 설명하면 CRUD용 sql을 개발자가 직접 작성하지 않아도 되는 점, 객체와 테이블과의 다른 쉬운 매핑(예를 들면 상관관계, 연관관계), 어떤 데이터베이스를 사용하든 간에 간단한 코드만 적어도 바로바로 적용될 수 있다.
'JPA' 카테고리의 다른 글
JPA 임베디드 타입 (0) | 2021.07.22 |
---|---|
JPA - 프록시와 연관관계(즉시로딩, 지연로딩, N + 1 문제) (0) | 2021.07.19 |
JPA 객체 매핑- 연관 관계 (0) | 2021.07.08 |
JPA H2 데이터베이스 및 서버 실행시 자동 Insert (0) | 2021.06.29 |
JPQL 개념과 스프링 데이터 JPA 쿼리메서드 이용 (0) | 2021.06.27 |