Develop Story/JPA

JPA 개념 및 작동방식

박은유 2024. 4. 15. 12:56
반응형

JPA의 주요 개념

  1. 엔티티(Entity): JPA에서는 데이터베이스의 테이블에 매핑되는 자바 객체를 엔티티라고 합니다. 엔티티는 데이터베이스에 저장되거나 검색되는 개체입니다.
  2. 영속성 컨텍스트(Persistence Context): 영속성 컨텍스트는 엔티티의 상태를 관리하는 환경입니다. 엔티티 매니저를 통해 영속성 컨텍스트에 접근하고, 엔티티의 상태 변화를 추적하며 데이터베이스와의 트랜잭션을 관리합니다.
  3. 엔티티 매니저(Entity Manager): 엔티티 매니저는 영속성 컨텍스트를 관리하고 엔티티의 생명주기를 관리합니다. 데이터베이스와의 트랜잭션을 처리하고 영속성 컨텍스트를 통해 엔티티를 데이터베이스에 저장하거나 조회합니다.
  4. JPQL(Java Persistence Query Language): JPQL은 객체지향 쿼리 언어로, 엔티티와 속성을 대상으로 쿼리를 작성할 수 있습니다. JPQL은 데이터베이스 벤더에 독립적이므로, 데이터베이스 변경 시 SQL 쿼리를 수정할 필요가 없습니다.
  5. 엔티티 매핑(Entity Mapping): JPA는 객체와 데이터베이스 테이블 간의 매핑을 지원합니다. 이를 통해 개발자는 어노테이션 또는 XML 설정을 사용하여 엔티티와 데이터베이스 테이블을 매핑할 수 있습니다.

동작방식은 이렇습니다.

 

Q&A

1. JPA란 무엇인가요?

 : JPA는 자바 표준 인터페이스로, 자바 객체와 관계형 데이터베이스를 매핑하고 조작하기 위한 API입니다.

2. JPA의 주요 특징은 무엇인가요?

 : 주요 특징으로는 객체-관계 매핑(ORM), 영속성 컨텍스트, 지연로딩, 트랜잭션 관리, JPQL(Java Persistence Query Language) 등이 있습니다.

3. JPA의 동작 방식에 대해 설명해주세요.

 : JPA는 개발자가 작성한 엔티티 클래스와 데이터베이스 테이블 간의 매핑을 기반으로 작동합니다. 엔티티 매니저를 통해 영속성 컨텍스트를 관리하고, 엔티티의 상태 변화를 추적하여 적절한 SQL 쿼리를 생성하여 데이터베이스에 반영합니다.

4. JPA의 주요 구성 요소는 무엇인가요?

 : JPA의 주요 구성 요소로는 엔티티(Entity), 엔티티 매니저(Entity Manager), 영속성 컨텍스트(Persistence Context), JPQL(Java Persistence Query Language), 엔티티 매핑 정보(Mapping Metadata) 등이 있습니다.

5. JPA를 사용하는 이유는 무엇인가요?

 : JPA를 사용하면 객체와 관계형 데이터베이스 간의 매핑을 간편하게 처리할 수 있고, SQL 쿼리를 직접 작성하지 않아도 됩니다. 또한, JPA를 통해 객체 지향적인 코드를 유지하면서 데이터베이스와 효율적으로 상호작용할 수 있습니다.

6. JPA의 지연로딩과 즉시로딩의 차이는 무엇인가요?

 : 지연로딩은 연관된 엔티티를 실제로 사용할 때까지 로딩을 지연시키는 방식이고, 즉시로딩은 엔티티를 쿼리할 때 즉시 연관된 엔티티도 함께 로딩하는 방식입니다.

7. JPA에서 영속성 컨텍스트란 무엇인가요?

 : 영속성 컨텍스트는 엔티티를 영구 저장하는 환경으로, 엔티티 매니저를 통해 관리됩니다. 영속성 컨텍스트는 엔티티의 상태를 추적하고, 데이터베이스와의 트랜잭션을 관리합니다.

8. JPA에서의 엔티티 생명주기에 대해 설명해주세요.

 : JPA에서 엔티티는 비영속(New), 영속(Managed), 준영속(Detached), 삭제(Removed)의 네 가지 상태를 가집니다. 비영속 상태에서 영속 상태로 전환되며, 영속 상태의 엔티티는 영속성 컨텍스트에 의해 관리됩니다.

9. JPA와 Hibernate의 관계는 무엇인가요?

 : Hibernate는 JPA의 구현체 중 하나로, JPA의 표준 명세를 따르면서도 더 많은 기능을 제공합니다. 따라서 Hibernate는 JPA를 구현하는 라이브러리 중 하나로 볼 수 있습니다.

10. JPA에서 쿼리를 작성하는 방법은 무엇인가요?

 : JPA에서는 JPQL(Java Persistence Query Language)을 사용하여 쿼리를 작성합니다. JPQL은 엔티티와 속성을 대상으로 쿼리를 작성하며, 데이터베이스 벤더에 독립적인 쿼리 작성을 지원합니다.

반응형