Java Persistence Framework는 데이터를 영속적으로 관리하는 역할을 한다.
이를 이해하기 위해 먼저 Persistence와 Persistence Framework가 무엇인지, 그리고 그 배경에 있는 Layered Architecture 개념을 알아보자.
Persistence는 프로그램이 종료되더라도 사라지지 않고 유지되는 데이터의 특성을 의미한다.
쉽게 말해, 휘발되지 않고 저장소에 계속 남아있는 데이터를 가리킨다.
ex) 파일 시스템, 데이터베이스 등에 저장된 데이터
이러한 데이터를 다루기 위해 우리는 Persistence Layer를 사용한다.
Persistence Layer는 데이터를 영속적으로 저장, 관리하는 계층이다.
하지만 이를 직접 구현하려면 JDBC 같은 복잡한 기술을 사용해야 한다.
💡 이러한 복잡함을 해결하고 개발을 더 쉽게 하기 위해 등장한 것이 바로 Persistence Framework다.
Persistence Framework는 데이터를 영속적으로 다루는 작업을 쉽게 하기 위해 등장한 프레임워크다.
JDBC 프로그래밍의 복잡함을 피하고, 더 간단하고 빠르게 데이터베이스와 연동하는 시스템을 개발할 수 있도록 돕는다.
내부적으로는 JDBC API를 사용하지만, 더 간단한 방법으로 데이터베이스와 상호작용할 수 있다.
이 두 가지 방식의 차이점과 특성에 대해 아래에서 살펴보자.
ORM은 객체와 관계형 데이터베이스 간의 관계를 자동으로 처리해주는 반면, SQL Mapper는 SQL 문장을 직접 작성하여 매핑한다.
ORM은 직관적인 코드로 데이터베이스를 조작할 수 있어 생산성이 높지만, SQL Mapper는 더 세밀하게 제어할 수 있다는 차이가 있다.
이제 Persistence Framework가 등장하는 배경인 Layered Architecture를 이해해 보자.
Layered Architecture는 소프트웨어 개발에서 자주 사용되는 구조로, 관심사의 분리를 통해 시스템을 계층화한다.
Persistence Framework를 이해하려면 4-Tier Layered Architecture를 알아두면 좋다.
이 구조에서 가장 하단에 위치한 Database Layer에 영속성을 부여하는 것이 Persistence Layer이며, 이 Persistence Layer에 속하는 도구가 Persistence Framework다.
💡 Layered Architecture 요약
각 계층이 특정 역할만을 수행하도록 설계되어 응집도는 높이고, 결합도는 낮추는 구조를 만든다.
이로 인해 각 계층을 독립적으로 개발하고 유지보수하기 쉬우며, 테스트도 간편해진다.
Java에서 Persistence Framework는 데이터베이스와의 연동을 단순화하고, 영속성을 관리하는 데 핵심적인 역할을 한다.
즉,