영속성(Persistence)란 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성을 말한다.
영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 잃어 버리게 된다. 때문에 파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용하여 데이터를 영구하게 저장하여 영속성을 부여한다.
Persistence Layer
계층 참고
- 프레젠테이션 계층 (Presentation layer) - UI 계층 (UI layer) 이라고도 함
- 애플리케이션 계층 (Application layer) - 서비스 계층 (Service layer) 이라고도 함
- 비즈니스 논리 계층 (Business logic layer) - 도메인 계층 (Domain layer) 이라고도 함
- 데이터 접근 계층 (Data access layer) - 영속 계층 (Persistence layer) 이라고도 함
🤔 Persistence Framework?
JDBC 프로그래밍의 복잡함이나 번거로움 없이 간단한 작업만으로 데이터베이스와 연동되는 시스템을 빠르게 개발할 수 있으며 안정적인 구동을 보장한다.
Persistence Framework는 SQL Mapper과 ORM으로 나눌 수 있다.
SQL Mapper과 ORM의 관해서는 아래에서 설명한다.
Persistence Framework는 SQL Mapper과 ORM으로 나눌 수 있다.
SQL Mapper과 ORM
JDBC는 DB에 접근할 수 있도록 Java에서 제공하는 API이다.
JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다.
자바 ORM 기술에 대한 표준 명세로, JAVA에서 제공하는 API이다. (스프링에서 제공하는 것이 아니다.)
자바 플랫폼 SE와 자바 플랫폼 EE를 사용하는 응용프로그램에서 관계형 데이터베이스의 관리를 표현하는 자바 API이다.
즉, JPA는 ORM을 사용하기 위한 표준 인터페이스를 모아둔 것이다.
이때, JPA는 인터페이스이다. JPA는 특정 기능을 하는 라이브러리가 아니다. JPA 역시 자바 어플리케이션에서 관계형 데이터베이스를 어떻게 사용해야 하는지를 정의하는 한 방법일 뿐이다.
기존에 EJB에서 제공되던 Entity Bean을 대체하는 기술이다.
JPA 구성 요소 (세 가지)
ORM이기 때문에 자바 클래스와 DB테이블을 매핑한다.(sql을 매핑하지 않는다)
사용자가 원하는 JPA 구현체를 선택해서 사용할 수 있다.
Hibernate는 JPA의 구현체 중 하나이다.
Hibernate가 SQL을 직접 사용하지 않는다고 해서 JDBC API를 사용하지 않는다는 것은 아니다.
HQL(Hibernate Query Language)이라 불리는 매우 강력한 쿼리 언어를 포함하고 있다.
장점
단점
개발자가 지정한 SQL, 저장 프로시저 그리고 몇 가지 고급 매핑을 지원하는 SQL Mapper이다.
JDBC로 처리하는 상당 부분의 코드와 파라미터 설정 및 결과 매핑을 대신해준다.
데이터베이스 record에 원시 타입과 Map 인터페이스 그리고 자바 POJO를 설정해서 매핑하기 위해 xml과 Annotation을 사용할 수 있다.
MyBatis는 원래 Apache Foundation의 iBatis였으나, 생산성, 개발 프로세스, 커뮤니티 등의 이유로 Google Code로 이전되면서 이름이 바뀌었다.
장점
단점
Spring JPA와의 차이점도 작성
출처
자바 ORM 표준 JPA 프로그래밍 강의
ORM의 사실과 오해
[JDBC] JDBC, JPA/Hibernate, Mybatis의 차이
JPA, Hibernate, 그리고 Spring Data JPA의 차이점
JPA는 도대체 뭘까? (orm, 영속성, hibernate, spring-data-jpa)