Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

요리사에서 IT개발자로

스파르타 부트캠프 JPA (다락방) 본문

Spring

스파르타 부트캠프 JPA (다락방)

H.S-Backend 2024. 6. 18. 13:58

JPA(Java Persistence API)란 

JAVA에서 제공하는 ORM기술RDBMS를 다루기 위한 인터페이스 표준명세이다.

 

Persistence(영속성)은 JPA를 관통하는 매우 중요한 개념이며

관계형 데이터 베이스를 사용하기 위한 API, 인터페이스 이다.

 


 

Persistence(영속성)

 

영속성은 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성을 말한다.

JPA에서 영속성은

데이터를 가지는 객체(Entity) 그 자체
Application의 라이프 사이클과 무관하게 영구히 저장함을 의미한다.

Java를 이용한 ORM(Object - relational mapping)으로
 
JPA를 사용하기 위해서
JPA를 구현한 Hibernate, EclipseLink, DataNucleus등 과 같은 ORM 프레임워크를 사용해야한다.

이 중에서 Hibernate가 가장 범용적이며 다수의 기능을 제공한다.

 


JPA를 써야하는 이유

 
주류 어플리케이션 개발스택
객체지향 언어(JAVA, C#, Python 등)와 관계형 DB
기본적으로

패더라임의 불일치가 존재한다.

 
객체지향 언어
객체의 특성(추상화, 캡슐화, 정보은닉, 상속, 다형성)을 통해서
시스템의 복잡한 비즈니스를 제어하는데 목적이 있다면
 
관계형 DB
데이터간 관계를 통해서 데이터를 저장하고 보관한다.
 

객체를 관계형 DB로 변환하는 것에서 문제가 발생한다.

 

 

객체지향 언어를 사용하는 JAVA 진영

좀 더 편하고 안정적인 방법으로 객체를 데이터베이스에 영구히 저장하기 위해서

JDBC(Java Database Connectivity)를 기반으로

Persistence Framework(SQL Mapper, ORM)을 탄생 시켰다.

 

ORM은 성능이 느리고 복잡했던 EJB -> Hibernate -> JPA순으로 발전했다.

 

SQL Mapper와 ORM

 

SQL Mapper(Mybatis, JDBC Templates)
저장하거나 저장된 객체 데이터를 SQL을 통하여 직접 맵핑해줘야하기에
지루하고 반복적인 SQL을 작성해야한다.
 
SQL을 직접사용함으로 인해서
비즈니스 DMBS에 의존하거나 종속시키는 오류를 가져오고

비즈니스를 처리하는 객체지향 시스템에 혼란을 준다.

 

이를 해결하기 위해서

RDBMS의 Entity관계를 매핑 시켜서
SQL Query가 아닌
 

코드 구현을 통해 데이터를 다룰 수 있는

기술 ORM(Object - relational mapping)이 나타났다.

 
 

비즈니스를 직접적으로 수행하는
객체지향 패러다임(DDD, EDA 등)에 집중하여
RDBMS에 독립적이며 재사용, 유지보수, 리팩토링에 용이한
어플리케이션 구현을 위해서 사용한다.

 

JPA는 만능이 아니기에 모든 영속을 JPA로 대체할 수 없다.

 
 
 
 

반응형