Java Persistence API(JPA)는 자바 표준 기술 중 하나로, 객체와 관계형 데이터베이스 간의 매핑을 처리하는 ORM(Object-Relational Mapping) 프레임워크입니다. 이 기술은 객체 지향 프로그래밍의 강점을 살려 데이터베이스와의 상호 작용을 추상화하고, 개발자가 데이터베이스와 직접적으로 상호 작용하지 않고도 객체 모델을 사용하여 데이터를 조작할 수 있게 합니다.
JPA의 필요성
1. 객체 지향 프로그래밍과의 통합
- JPA는 객체 지향 프로그래밍과 관계형 데이터베이스 간의 불일치를 해결합니다. 객체는 상속, 다형성, 연관 관계 등의 특징을 가지고 있지만, 관계형 데이터베이스는 이러한 특징을 직접적으로 지원하지 않습니다. JPA를 사용하면 객체 모델과 데이터베이스 간의 매핑을 편리하게 처리할 수 있습니다.
2. 생산성 향상
- JPA는 데이터베이스와의 저수준 상호 작용을 추상화하므로 개발자는 SQL 쿼리를 직접 작성하지 않고도 데이터를 쉽게 다룰 수 있습니다. 이는 개발 생산성을 향상시키고 유지보수를 더 쉽게 만듭니다.
3. 유지보수성 및 확장성
- 데이터베이스 스키마의 변경이나 새로운 기능 추가와 같은 유지보수 작업이 필요한 경우, JPA를 사용하면 객체 모델만 업데이트하면 됩니다. 이는 데이터베이스와의 결합도를 낮추고 시스템의 확장성을 향상시킵니다.
4. 표준 인터페이스 제공
- JPA는 자바에서 데이터베이스와 상호 작용하기 위한 표준 인터페이스를 제공합니다. 이는 벤더 간의 차이로 인한 문제를 해결하고, 이식성 있는 애플리케이션 개발을 가능하게 합니다.
JPA의 주요 특징
1. 애노테이션 기반 매핑
- JPA는 객체와 데이터베이스 테이블 간의 매핑을 위해 애노테이션을 사용합니다. 이를 통해 개발자는 간단한 설정으로 객체를 데이터베이스에 저장하고 조회할 수 있습니다.
2. 객체 지향 쿼리 언어 (JPQL)
- JPQL은 SQL과 유사하지만 객체를 대상으로 하는 쿼리 언어입니다. 이를 통해 개발자는 데이터베이스에 종속되지 않고 객체를 기반으로 쿼리를 작성할 수 있습니다.
3. 영속성 컨텍스트
- JPA는 영속성 컨텍스트를 통해 엔터티를 관리합니다. 이는 데이터베이스에서 가져온 엔터티를 일시적으로 저장하고, 변경 사항을 추적하여 효율적으로 데이터베이스에 반영합니다.
마무리
JPA는 자바 개발자들에게 객체 지향 프로그래밍의 이점을 유지하면서도 데이터베이스와 효과적으로 상호 작용할 수 있는 강력한 도구를 제공합니다. 객체-관계 매핑, 표준 인터페이스, 영속성 컨텍스트 등의 기능을 통해 개발자들은 생산성을 높이고 유지보수성을 강화할 수 있습니다. JPA를 사용하여 애플리케이션을 개발하면 데이터베이스와의 인터랙션을 추상화하고 동시에 높은 수준의 유연성을 유지할 수 있습니다.
'TIL(Today I Learned)' 카테고리의 다른 글
[TIL]SpringBoot의 JPA (0) | 2023.11.15 |
---|---|
[TIL ]Entity (1) | 2023.11.14 |
[TIL] IoC Container와 Bean (0) | 2023.11.10 |
[TIL] 제어의 역전 (Inversion of Control, IoC)와 의존성 주입 (Dependency Injection, DI) (1) | 2023.11.09 |
[TIL] 3 Layer Architecture (0) | 2023.11.08 |