JPA (Java Persistence API)

Java Persistence API (JPA)는 Java에서 관계형 데이터베이스를 다루기 위한 API로, 객체 지향 프로그래밍과 관계형 데이터베이스 간의 매핑을 제공한다. JPA는 개발자들이 SQL 쿼리를 작성하지 않고도 데이터베이스와 상호 작용할 수 있게 도와준다.

 

JPA 소개
JPA는 ORM (Object-Relational Mapping) 기술의 구현체 중 하나다. ORM은 객체와 데이터베이스 간의 매핑을 자동으로 처리하여 개발자들이 객체 지향적으로 데이터를 다룰 수 있도록 도와준다.

JPA는 Java SE와 Java EE에서 모두 사용 가능하며, Java EE에서는 JPA를 기반으로 JPA를 지원하는 EJB 컨테이너와 웹 애플리케이션 서버에서 JPA를 사용할 수 있다. JPA는 Hibernate, EclipseLink, OpenJPA 등의 구현체를 가지고 있다.

Oracle DB와 JPA 연동하기
JPA에서는 다양한 데이터베이스 관리 시스템과 호환되며, Oracle DB도 지원된다. JPA에서 Oracle DB를 사용하기 위해서는 해당 데이터베이스에 맞는 JDBC 드라이버가 필요하다. 이 드라이버를 클래스패스에 추가하고, JPA 프로바이더 설정에서 해당 드라이버를 사용하도록 설정하면 된다.

그러나 Oracle DB에서는 다른 데이터베이스 시스템과는 다른 특성이 있을 수 있으므로, JPA를 사용할 때 이에 맞는 설정이 필요할 수 있다. 예를 들어, Oracle DB에서는 시퀀스를 사용하여 자동 증가 ID 값을 생성하는 것이 일반적이다. 이러한 설정은 JPA에서 맞춤 설정할 수 있다.

JPA 설치 및 설정
JPA는 Java SE와 Java EE에 모두 포함되어 있으므로 별도로 설치할 필요가 없다. Java SE의 경우, JPA를 사용하기 위해서는 Java Persistence API 구현체를 추가해야 한다. 대표적인 JPA 구현체로 Hibernate, EclipseLink, OpenJPA 등이 있다.

이러한 JPA 구현체는 Maven, Gradle 등의 빌드 도구를 사용하여 프로젝트에 추가할 수 있다. 또는 해당 JPA 구현체의 라이브러리 파일을 다운로드하여 프로젝트에 추가할 수도 있다.

Java EE의 경우, JPA를 지원하는 컨테이너를 사용하면 된다. 대표적인 Java EE 컨테이너로는 WildFly, TomEE, GlassFish 등이 있다. 이러한 컨테이너는 JPA 구현체를 자동으로 포함하고 있으므로 별도로 설치할 필요가 없다.

즉, JPA를 사용하기 위해서는 Java SE의 경우 구현체를 추가하거나 Java EE의 경우 컨테이너를 사용하면 된다. 하지만 이러한 구현체나 컨테이너에서 자동으로 JPA를 설치하고 구성해주는 것은 아니므로, 개발자가 직접 설정해주어야 한다.

 

JPA 설정 방법

JPA 설정 파일인 persistence.xml 파일을 생성합니다. 이 파일은 프로젝트의 src/main/resources/META-INF 폴더에 위치해야 한다. persistence.xml 파일에는 데이터베이스 연결 정보와 JPA 구현체에 대한 설정이 포함된다.

<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
             http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
             version="2.1">

    <persistence-unit name="MyPersistenceUnit">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.driver.OracleDriver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:XE" />
            <property name="javax.persistence.jdbc.user" value="your_username" />
            <property name="javax.persistence.jdbc.password" value="your_password" />

            <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
        </properties>
    </persistence-unit>
</persistence>

 

Java SE의 경우, 먼저 Maven이나 Gradle과 같은 빌드 도구를 사용하여 프로젝트에 JPA 구현체를 추가해야한다. 

나는 Bulid.gradle을 사용하고 있기에, Bulid.gradle을 기준으로 설명하겠다.

 

dependencies {
    implementation 'org.hibernate:hibernate-core:5.4.32.Final'
}

만약 해당 프로젝트에서 특정 데이터베이스와 연동하기 위해 필요한 JDBC 드라이버도 추가해야 한다면, 다음과 같이 의존성을 추가하면 된다. Oracle DB의 경우, 다음과 같이 의존성을 추가한다.

dependencies {
    implementation 'org.hibernate:hibernate-core:5.4.32.Final'
    implementation 'com.oracle.ojdbc:ojdbc8:19.3.0.0'
}

 

이렇게 설정한 후에는 앞서 설명한대로 persistence.xml 파일을 생성하고 필요한 설정을 추가하여 JPA를 사용할 준비를 마칩니다.

+ Recent posts