ORM : Object-Relation Mapping
JPA : Java Persistent API
JPA
- 자바 ORM 기술에 대한 API 표준 명세
: ORM을 사용하기 위한 인터페이스를 모아둔 것
-> Hibernate, EclipseLink 같은 ORM 프레임워크를 사용한다.
기본 JDBC
- 직접 DB Connection 생성, Statement 생성 및 쿼리 수행, 결과값(ResultSet) 처리를 구현해야함
MyBatis
- 반복적인 DB Connection, SQL 재사용성의 미비를 해결
- 그러나 dao의 반복작업이 발생하고, SQL query가 XML로 작성되기 때문에 빌드과정에서 오류가 일어나지 않는다.
=> 유지보수 과정에서 오류 발생시 해당 SQL query와 관련된 dao, service, controller를 모두 탐색해 봐야함
Hibernate
- SQL Mapper의 불편한 점 해결
=> 유지보수과정에서 type safe하게 빌드와 테스트코드만으로 오류를 잡아줌
=> 개발 생산성 향상
- 메서드 호출만으로 쿼리가 수행됨
(개발자가 직접 sql을 작성하지 않을 뿐, 메서드 내부에서는 JDBC api가 동작하고 있다)
- 그러나, 복잡한 데이터를 추출하는 경우에는 직접 쿼리를 작성하는 mapper 방식이 더 나음
Persistence
- 프로그램이 종료되더라도 사라지지 않는 데이터의 특성(영속성)
- 프로그램의 데이터는 단지 메모리에만 존재하기 때문에 프로그램이 종료되면 모두 사라지게 된다.
=> 파일 시스템, 관계형 데이터베이스 등에 영구적으로 저장하여 영속성을 부여할 수 있다.
- persistence layer : 데이터에 영속성을 부여해주는 계층(보통 DB에 접근하는 역할)
=> JDBC로 직접 구현할 수 있지만, 보통 persistence framework를 사용하여 개발한다.
Persistence Framework
- Persistence Framework는 SQL Mapper와 ORM으로 나눌 수 있다.
1. ORM(Object Relational Mapping)
DB 데이터 <-- 매핑 --> 객체(object)
- 객체와 DB의 데이터를 직접 매핑해주는 것을 말한다.
=> SQL Query가 아니라 직관적인 코드(메서드)로 데이터를 조작할 수 있다.
=> 객체간의 관계로 SQL을 자동 생성한다.
- ex) JPA, Hibernate
- JPA(Java Persistent API)
- 자바 ORM 기술에 대한 API 표준 명세
: ORM을 사용하기 위한 인터페이스를 모아둔 것
- 구현체를 선택하여 사용할 수 있다.
=> Hibernate, EclipseLink 같은 ORM 프레임워크
2. SQL Mapper
SQL <-- 매핑 --> 객체(object)
- SQL Query문을 통해 데이터를 조작한다.
=> 즉, 직접 Query문을 작성해야한다.
- ex) MyBatis, JDBC Templetes
- JDBC(Java Database Connectivity)
- DB에 접근할 수 있도록 Java에서 제공하는 API
=> 모든 Persistence Framework는 내부적으로 JDBC API를 사용한다.
- MyBatis
- 개발자가 지정한 SQL, 고급 매핑을 지원하는 SQL Mapper
- JDBC로 처리하는 상당부분의 코드와 파라미터 설정, 결과 매핑을 지원해준다.
=> 기존 JDBC를 사용할 때 DB 관련 여러 설정(Connection 등)을 다루어야 했으나,
자바 객체를 실제 SQL 쿼리문에 연결함으로써 빠른 개발과 편리한 테스트를 할 수 있다.
- xml과 annotation을 사용하여 primitive타입과 Map 인터페이스, 자바 POJO 객체를 설정하여 DB record에 사용할 수 있다.
'DEVELOP > DB' 카테고리의 다른 글
DB 면접 대비 (0) | 2019.11.02 |
---|---|
트랜잭션(Transaction) (0) | 2019.10.04 |