JPA 기본 - 시작하기

1. JPA


  • Java Persistence API
  • 자바 진영의 ORM 기술 표준
    • ORM : Object-relational mapping(객체 관계 매핑)
    • 객체는 객체대로, 관계형 db는 관계형 db대로 설계하고 ORM 프레임워크가 중간에서 매핑
  • JPA는 인터페이스 모음이고 이를 구현한 구현체들(하이버네이트 등등) 중에서 선택해서 사용한다.
  • 특정 데이터베이스에 종속되지 않는다
    • MySQL을 사용하건 Oracle을 사용하건 설정만 수정해주면 코드에 영향을 주지 않는다.
  • 모든 데이터 변경은 트랜잭션 안에서 실행


2. 프로젝트 생성


전에 했던 것과 다르게 이번 강의에서는 Maven을 사용했다. start.spring.io를 사용하지 않고 인텔리제이에서 프로젝트를 만들어서 시작했다.
그림1

  • pom.xml는 build.gradle과 같이 라이브러리등을 땡겨오는 곳이라고 생각하면 된다.
  • persistence.xml은 gradle에서 properties라고 보면 된다. JPA 설정을 위해 resources 폴더에 따로 META-INF 폴더를 만들어 persistence.xml로 파일을 만들어야 한다. 이 파일에서 persistence-unit name=”“은 db마다 하나씩 만든다고 생각하면 된다. 지금은 h2 db만 사용하니 하나만 작성해두고 설정정보를 작성해주면 된다.
<?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"/>
 <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"/>
 <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>

 <!-- 옵션 -->
 <property name="hibernate.show_sql" value="true"/>
 <property name="hibernate.format_sql" value="true"/>
 <property name="hibernate.use_sql_comments" value="true"/>
 <!--<property name="hibernate.hbm2ddl.auto" value="create" />-->
 </properties>
 </persistence-unit>
</persistence> 


3. Entity


  • @Entity : JPA가 관리할 객체를 표시하는 애노테이션
  • @Id : db와 pk 매칭
  • EntityManagerFactory : 애플리케이션 전체에 하나만 생성해서 공유
  • EntityManager : 쓰레드간 공유 X -> 사용하고 삭제


4. JPQL


  • JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제공
  • SQL은 테이블을 대상으로 쿼리를 날리지만, JPQL은 Entity 객체를 대상으로 쿼리
    • 특정 DB SQL에 의존 X -> SQL설정 정보만 수정하면 코드에 변화 X



본 포스팅은 인프런 김영한님의 ‘자바 ORM 표준 JPA 프로그래밍 - 기본편’ 강의를 듣고 정리한 내용을 바탕으로 복습을 위해 작성하였습니다. [강의 링크]


© 2021. By Backtony