JPA (Java Persistence API) 기초/설정

2023. 10. 25. 20:30
728x90

* 개념 정리

1) JPA (Java Persistence API) : 자바 진영에서 ORM기술의 표준으로 자리잡은 인터페이스의 집합을 의미

2) ORM (Object Relational Mapping) : Java의 객체 + 데이터베이스 테이블(릴레이션) + 서로 연결(mapping)

→ 간단하게 말하면 별도의 SQL문 작성 없이 Java 코드만으로 DB에 데이터를 저장 가능

3) Persistence 지속성 : 애플리케이션을 여러 번 실행하더라도 데이터가 유지되는 성질. & 애플리케이션 내 Entity를 DB와 같은 저장 매체에 저장하는 것.

 

** JPA Architecture

- EntityManagerFactory : EntityManager를 생성할 수 있는 공장

- EntityManager : Entity의 관리자. >> 트랜잭션 단위 수행 시마다 작성, 트랜잭션 수행 후에는 자원 반납(close())해야 내부적으로 Connection() 객체를 반납함.

- EntityTransaction : 데이터에 대한 변경작업이 필요할 때 사용되는 객체 (Transaction) >> UPDATE, DELETE, INSERT (SELECT는 필요없음) / COMMIT 수행 시에만 쿼리가 적용될 수 있다!

- Persistence unit : EntityManager에 의해 관리되는 모든 Entity

- Persistence Context (PC/영속성 컨텍스트) : Entity들이 보관, 관리되는 실제 DB가 아닌 임시 메모리 영역. 

 

~ 순서 ~

1) Persistence 클래스를 통해 EntityManagerFactory 인스턴스 생성

2) 생성된 EntityManagerFactory는 Persistence unit인 persistence.xml 파일을 통해 설정 정보 구성됨.

3) EntityManagerFactory를 통해 EntityManager 인스턴스 생성

4) EntityManager를 통해 Entity 관리됨.

5) Entity 관리는 영속성 컨텍스트( Persistence  context)에서 관리.

 

 

일단 그 전에 ~ pom.xml 파일 설정의 dependency 설정 해주었다. 

** pom.xml 파일 dependency 설정

- maven repository에서 복사 붙여넣기~ 

1) hibernate (jpa)

2) oracledb

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>dev.syntax</groupId>
  <artifactId>step01</artifactId>
  <version>0.0.1-SNAPSHOT</version>

<dependencies>
	<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
	<dependency>
	    <groupId>org.hibernate</groupId>
	    <artifactId>hibernate-core</artifactId>
	    <version>5.4.10.Final</version>
	</dependency>
	
		<!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8 -->
	<dependency>
	    <groupId>com.oracle.database.jdbc</groupId>
	    <artifactId>ojdbc8</artifactId>
	    <version>21.5.0.0</version>
	</dependency>
	
</dependencies>

</project>

 

이제 persistence.xml 파일을 설정해보자!

** Persistence.xml 파일 설정

: EntityManagerFactory가 참조하는 설정 파일입니다...!

1) persistence-unit name은 프로젝트 명으로 지정

2) 필수 입력 속성(properties) 생성 : javax.persistence ~ 로 시작하는 설정은 JPA에서 제공하는 표준 속성이다.

3) 옵션 속성도 생성

<?xml version="1.0" encoding="UTF-8"?>

<persistence version="2.2" 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_2.xsd">
    
    <persistence-unit name="step01">
    	<properties>
        <!-- 필수 입력 속성 -->
    		<property name = "javax.persistence.jdbc.drive" value = "oracle.jdbc.driver.OracleDriver" />
    		<property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521/{DATABASE_NAME}"/>
    		<property name="javax.persistence.jdbc.user" value="{USER_NAME}"/>
    		<property name="javax.persistence.jdbc.password" value="{PASSWORD}"/>
  	        <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />

    		
	<!--  옵션(선택) 속성 -->
    		<!-- Hibernate(JPA) 실행 과정에서 Console에 테이블 생성 DDL, DML 등의 SQL문을 출력 -->
    		<property name="hibernate.show_sql" value="true"/>
    		
    		<!-- SQL의 출력 형태 정렬 -->
    		<property name="hibernate.format_sql" value="true"/>
    		
    		<!-- 애플리케이션 실행 시 DB 테이블을 자동으로 생성할 것인지? -->
    		<!-- create: 기존 테이블이 존재할 경우, 해당 테이블을 제고(DROP), 테이블을 새로 생성, DROP + CREATE-->
    		<!-- update: DB테이블과 엔티티 맵핑 정보를 비교, 변경된 사항만 수정 -->
    		<property name="hibernate.hbm2ddl.auto" value="update"/>    	
    	</properties>
    </persistence-unit>
</persistence>

 

이렇게 하면 일단 설정 완.

 

자바 파일로 넘어가서 엔터티 어쩌구를 순서대로 생성하면 된다~~~~!

 

이다음은 다음 글에서 확인 가능하다.

팟팅

728x90

BELATED ARTICLES

more