❤️ Today I Learned
JPA
📕 내용
Java Persitence API
내가 아는 의미 : 쿼리문을 효율적으로 다룰수있게 해주고 테이블과 클래스 간의 매핑 관계를 보다 쉽게 설정할 수 있기 때문에 사용
- 객체와 테이블 매핑: JPA를 사용하면 애플리케이션의 클래스와 데이터베이스의 테이블 간의 매핑을 어노테이션을 사용하여 쉽게 설정할 수 있습니다. 이를 통해 데이터베이스 스키마의 세부 사항을 몰라도 데이터를 객체 지향적으로 다룰 수 있습니다.
- 쿼리 언어 지원: JPA는 JPQL(JPA Query Language)라는 쿼리 언어를 제공합니다. 이 언어는 객체를 대상으로 하는 쿼리를 작성할 수 있게 해줍니다. 개발자가 데이터베이스 특정 쿼리 언어를 배우고 작성하지 않아도, 객체를 기반으로 데이터를 검색하고 조작할 수 있습니다.
- 영속성 관리: JPA는 영속성 컨텍스트라는 메모리 영역을 통해 객체의 생명주기를 관리합니다. 이를 통해 데이터베이스와의 효율적인 상호작용을 가능하게 하며, 변경된 객체를 데이터베이스에 반영할 때 적절한 시점에 자동으로 처리됩니다.
중요점 : ***[[영속성 컨텍스트]]
사전적 의미 : 어플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 것
JPA의 구성요소
- Persistence Unit (영속성 유닛): Persistence Unit은 JPA 설정의 최상위 단위입니다.
persistence.xml
파일을 통해 정의되며, 데이터베이스 연결 정보, 엔터티 클래스의 목록, 데이터베이스 생성 및 업데이트 전략 등을 포함합니다.
- Entity Class (엔터티 클래스): JPA에서 관리되는 객체를 나타내는 클래스입니다. 각 엔터티 클래스는 데이터베이스의 특정 테이블과 매핑됩니다. 엔터티 클래스에는
@Entity
어노테이션을 사용하여 JPA가 이 클래스를 엔터티로 인식하도록 표시합니다.
- EntityManager (엔터티 매니저): EntityManager는 JPA에서 가장 중요한 인터페이스 중 하나입니다. 엔터티의 생명주기를 관리하며, 트랜잭션을 시작하고 커밋하는 등의 기능을 제공합니다. EntityManager를 통해 데이터베이스와의 상호작용이 이루어집니다.
- JPQL (Java Persistence Query Language): JPQL은 객체지향 쿼리 언어로, 엔터티 객체를 대상으로 하는 쿼리를 작성할 수 있도록 합니다. SQL과는 다르게 테이블이 아닌 엔터티 객체에 집중합니다.
- Persistence Context ([[영속성 컨텍스트]]): 영속성 컨텍스트는 엔터티 객체의 상태를 추적하고 관리하는 메모리 영역입니다. 엔터티 매니저를 통해 데이터베이스와의 작업을 수행할 때, 영속성 컨텍스트가 엔터티 객체의 변경을 감지하고 적절한 SQL을 생성하여 데이터베이스에 반영합니다.