프로젝트 생성

  • JAVA 8
  • Maven
    • groupId: jpa-basic
    • artifactId: ex1-hello-jpa
    • version: 1.0.0
  • H2 Driver

pom.xml 생성

?xml version="1.0" encoding="UTF-8"?> 
  <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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
  <modelVersion>4.0.0</modelVersion> 
  <groupId>jpa-basic</groupId> 
  <artifactId>ex1-hello-jpa</artifactId> 
  <version>1.0.0</version> 
  <dependencies> 
  <!-- JPA 하이버네이트 --> 
  <dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-entitymanager</artifactId> 
    <version>5.3.10.Final</version> 
  </dependency> 
 <!-- H2 데이터베이스 --> 
  <dependency> 
    <groupId>com.h2database</groupId> 
    <artifactId>h2</artifactId> 
    <version>1.4.199</version> 
  </dependency> 
  </dependencies> 
</project>

persistence.xml 생성

  • /META-INF/persistence.xml에다가 생성
  • JPA설정 파일
  • 스프링을 사용한다면 스프링이 알아서 해주기 때문에 작성할 필요없다.
?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="hello"> 
<properties> 
  <!-- 필수 속성 --> 
  <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/> 
  // H2 드라이버 사용
  <property name="javax.persistence.jdbc.user" value="sa"/> 
  <property name="javax.persistence.jdbc.password" value=""/> 
  <property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test"/> 
  // DB위치 설정
  <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/> 
  // DB방언 설정, 하이버네이트가 지원해줌
 
  <!-- 옵션 --> 
  <property name="hibernate.show_sql" value="true"/> // SQL VIEW OPTION
  <property name="hibernate.format_sql" value="true"/> // SQL FORMATION
  <property name="hibernate.use_sql_comments" value="true"/> 
  <!--<property name="hibernate.hbm2ddl.auto" value="create" />--> // 
</properties> 
</persistence-unit> 
</persistence> 


JPA 동작 방식

JPA 동작 방식

  1. 설정 정보를 persistence.xml에서 조회한다.
  2. EntityManagerFactory 생성
  3. EntityManager 생성

Spring을 이용하면 Spring에서 다 해준다

JPA 동작확인

Member class 생성

package hellojpa; 
import javax.persistence.Entity; 
import javax.persistence.Id; 
@Entity // JPA가 관리할 객체 
@Getter @Setter
public class Member { 
  @Id // DB PK랑 매핑해준다.
  private Long id; 
  private String name; 
  //Getter, Setter … 
} 

실행 SQL쿼리

create table Member ( 
  id bigint not null, 
  name varchar(255), 
  primary key (id) 
)

JpaMain class 생성

public static void main(String[] args){
    EntityManagerFactory emf =  Persistence.createEntityManagerFactory("hello");
    EntityManager em = emf.createEntityManager();	
    EntityTransaction tx =  em.getTransaction();
    tx.begin();
    try {
        Member member = new Meber();
        member.setName("hi");
        em.persist(member); 
        // member 영속화
    tx.commit(); 
    } 
    catch (Exception e) {
    e.printStackTrace();
	tx.rollback();
    } finally {
	em.close();
    }
    emf.close();
}

DB에 가서 확인해보면 MEMBER Entity가 생성되고
hi라는 member가 추가 된 것을 확인 할 수 있다.

다음에는 조회, 수정 그리고 영속성 컨텍스트에 대해서 써보도록 하겠다.

Comments