<aside>
1️⃣ JPA (Java Persistence API)
</aside>
- Java Persistence API (JPA)는 자바에서 제공하는 ORM(객체-관계 매핑) 표준이다.
ORM은 Object-Relational Mapping의 약자로, 객체와 데이터베이스 테이블 간의 매핑을 처리해주는 것을 의미한다.
- JPA는 개발자가 직접 SQL을 작성하지 않고도 데이터베이스와 상호작용할 수 있도록 도와주며, 이를 통해 객체 지향적인 코드를 유지하면서 데이터베이스와의 작업을 편리하게 할 수 있다.
<aside>
2️⃣ 기본 요소들
</aside>
- EntityManager:
EntityManager는 JPA에서 중심적인 역할을 하는 인터페이스이다. EntityManager 인스턴스를 통해 데이터베이스의 CRUD(Create, Read, Update, Delete) 작업을 수행하며, 이 작업들은 주로 트랜잭션 안에서 이루어진다.
- EntityManager는 Entity의 생명주기를 관리하며, 이에 따라서 여러 가지 상태가 있다:
- Transient (임시 상태): EntityManager가 Entity를 관리하고 있지 않은 상태. 이 상태에서는 데이터베이스에 아무런 영향을 미치지 않는다.
- Managed (관리 상태): EntityManager가 Entity를 관리하고 있는 상태. Entity에 대한 변경 사항이 있을 경우, 트랜잭션이 커밋되는 시점에 해당 변경 사항이 데이터베이스에 반영된다.
- Detached (분리 상태): Entity가 한번은 관리 상태였지만, 이후에 관리 상태에서 벗어난 상태이다. 이 상태에서의 Entity 변경 사항은 데이터베이스에 반영되지 않는다.
- Removed (삭제 상태): Entity가 삭제되어 데이터베이스에서 해당 Entity를 제거하도록 예약된 상태이다. 트랜잭션이 커밋되는 시점에 해당 Entity는 데이터베이스에서 제거된다.
- EntityManager의 주요 메서드들
- persist: Entity를 관리 상태로 만든다. 이 메서드를 호출하면 Entity가 영속성 컨텍스트에 저장되고, 트랜잭션이 커밋되는 시점에 데이터베이스에 반영된다.
- find: 특정 타입의 Entity를 찾아서 반환한다.
- remove: Entity를 삭제 상태로 만든다. 트랜잭션이 커밋되는 시점에 데이터베이스에서 해당 Entity가 제거된다.
- merge: 분리 상태의 Entity를 다시 관리 상태로 돌려놓는다.
- getTransaction: 현재의 트랜잭션을 가져온다.
- EntityManager 코드예시
- Entity:
Entity는 데이터베이스 테이블의 레코드를 Java에서 사용할 수 있는 객체로 매핑한다. Entity 클래스는 보통 데이터베이스 테이블과 매핑되며, 이 클래스의 인스턴스는 레코드에 해당한다.
- Persistence Unit:
Persistence unit은 데이터베이스에 대한 연결 및 설정 정보를 담고 있다. 이 정보는 보통 **
persistence.xml
**이라는 설정 파일에 저장된다.
- "persistence.xml" 파일은 JPA에서 중요한 역할을 하는 설정 파일로, Persistence Unit의 설정 정보를 담고 있다.
이 파일은 주로 MAVEN 프로젝트에서 사용되며 프로젝트의 META-INF 디렉토리에 위치해 있다.
- persistence.xml 파일 maven 설정방법
- gradle 프로젝트는 다음과 같은 경로에 설정해준다. 이 디렉토리는 클래스 경로(
classpath
)의 루트에 해당하며, 애플리케이션 실행 시 자동으로 인식된다.
- src/main/resources/application.properties
- application.properties 파일 gradle 설정방법
<aside>
3️⃣ 핵심 기능
</aside>