JPA를 사용하면 관계형 데이터베이스와 객체 지향 프로그래밍 간의 불일치를 해결할 수 있으며,
객체를 데이터베이스에 저장하거나 조회할 수 있는 기능을 제공합니다.
JPA에서는 Entity라는 개념을 사용합니다. Entity는 데이터베이스에서 관리되는 객체로, 데이터베이스의 레코드와 매핑되는 자바 클래스를 말합니다.
Entity는 @Entity 어노테이션을 사용하여 정의되며, 해당 클래스의 인스턴스는 데이터베이스의 레코드와 매핑됩니다. EntityManager는 JPA에서 Entity를 관리하고, 데이터베이스와의 상호작용을 담당하는 주요한 클래스 중 하나입니다.
EntityManager는 EntityManagerFactory를 통해 생성되며, 데이터베이스와의 연결과 트랜잭션 관리를 담당합니다.
EntityManager는 Entity의 생명주기를 관리하며, 데이터베이스와의 동기화를 처리합니다.
EntityManager는 데이터베이스에 새로운 Entity를 저장하거나, 기존의 Entity를 수정하거나, 삭제하는 등의 작업을 수행할 수 있습니다. JPA는 객체 지향 프로그래밍에서 사용되는 객체를 직접적으로 데이터베이스와 연결하여 사용할 수 있도록 해줍니다. EntityManager를 통해 데이터베이스와의 상호작용을 추상화하며, 객체 지향 프로그래밍의 특징을 유지하면서 데이터베이스와의 상호작용을 수행할 수 있습니다. 이를 통해 개발자는 객체 지향적인 코드를 작성하면서도 데이터베이스와의 상호작용을 쉽게 구현할 수 있습니다.
JPA(Entity Manager)는 자바 진영에서 만들어졌습니다. JPA는 Sun Microsystems(선 마이크로시스템즈)에서 Java Community Process(JCP)라는 자바 표준화 프로세스를 통해 표준화되었으며, 현재는 Oracle에서 관리하고 있습니다.
JPA의 구현체로는 Hibernate, EclipseLink 등이 있습니다. 이러한 구현체들은 JPA 표준에 따라 작성되었으며, EntityManager 등의 인터페이스를 제공하여 개발자가 쉽게 사용할 수 있도록 합니다.
JPA(Entity Manager)를 사용하는 이유는 다음과 같습니다.
객체 지향 프로그래밍과 관계형 데이터베이스의 불일치 해결 객체 지향 프로그래밍은 클래스와 객체를 기반으로 하며, 상속, 다형성, 캡슐화 등의 특징을 갖습니다. 반면에 관계형 데이터베이스는 테이블과 레코드를 기반으로 하며, SQL(Structured Query Language)을 사용하여 데이터를 조작합니다.
이러한 불일치로 인해 객체를 데이터베이스에 저장하거나 조회하기 어렵습니다.
JPA(Entity Manager)는 객체와 데이터베이스 간의 불일치를 해결해 주는 ORM(Object Relational Mapping) 기술을 제공합니다. 객체를 데이터베이스에 매핑하여 데이터를 관리할 수 있으며, 객체 지향 프로그래밍의 특징을 그대로 유지할 수 있습니다.
생산성 향상 JPA(Entity Manager)를 사용하면 데이터베이스와의 연결, 트랜잭션 관리, SQL 작성 등을 직접 구현할 필요가 없습니다. EntityManager를 사용하여 데이터베이스와의 상호작용을 추상화하면, 개발자는 좀 더 객체 지향적인 코드를 작성하면서도 데이터베이스와의 상호작용을 쉽게 구현할 수 있습니다.
이를 통해 생산성을 향상시킬 수 있습니다. 유지보수성 향상 JPA(Entity Manager)를 사용하면 데이터베이스 스키마 변경이나 SQL 쿼리 변경 등과 같은 유지보수 작업을 좀 더 쉽게 처리할 수 있습니다.
Entity 클래스를 수정하여 데이터베이스 스키마를 변경하거나, JPQL(Java Persistence Query Language)을 사용하여 SQL 쿼리를 변경할 수 있습니다.
이식성 향상 JPA(Entity Manager)는 데이터베이스 벤더와 독립적인 API이므로, 여러 종류의 데이터베이스에서 동일한 코드를 사용할 수 있습니다. 이식성이 좋아지므로, 애플리케이션의 유연성이 향상됩니다.
'코딩 배우기' 카테고리의 다른 글
[jquery] .add( 선택자 ) (0) | 2023.05.12 |
---|---|
자바 JPA 트랜잭션 커밋(commit) (0) | 2023.05.11 |
[JPA 매커니즘] JpaRepository (0) | 2023.05.11 |
[ SpringBoot ] ModelMapper 라이브러리 이용하기 (0) | 2023.05.11 |
3-WAY 핸드셰이크 (0) | 2023.05.11 |
댓글