티스토리 뷰

프로그래밍/JPA

[JPA] JPA 시작하기

da_devel 2022. 3. 10. 19:25
반응형

 

JPA(Maven)를 이용하여 프로젝트를 시작해보자.

 

먼저, 아래줄의 링크를 눌러 H2 데이터베이스를 설치해보자.

H2 데이터베이스 설치(링크)


H2 데이터 장점

  • 가볍다(1.5M)
  • 시퀀스, AUTO INCREMENT 기능을 지원한다.
  • 웹용 쿼리툴을 제공한다.

Maven 특징(링크)

  • 자바 라이브러리, 빌드 관리 도구
  • 라이브러리 자동 다운로드 및 의존성 관리
  • 최근에는 Gradle이 점점 유명해짐.

 

⚙ Project Settings

  • 자바 8 버전 이상
  • Maven Setting
    • groupId : jpa-basic
    • artifactId : ex1-hello-jpa
    • version : 1.0.0

먼저, pom.xml 파일에 사용할 라이브러리를 추가해보자.

우리는 JPA hibernate 라이브러리와 H2 database 라이브러리를 사용할 것이다. 

 

H2 database는 위에서 간단히 설명했고,

JPA hibernate에 대해서는 추후에 새로운 글을 통해 설명하겠다.

(새 글을 등록하게 되면 링크를 걸어두겠다.)

 

 

다시 설명으로 돌아와서, 

pom.xml 파일의 <dependencies> 부분에 다음의 코드를 추가한다.

 


 

👉 JPA 설정하기 - persistence.xml

  • persistence.xml은 JPA의 설정 파일이다.
  • 반드시 /META-INF/persistence.xml에 위치해야 한다.
  • javax.persistence로 시작 : JPA 표준 속성
  • hibernate로 시작 : 하이버네이트 전용 속성

 

무슨 말인지 모르겠다 하면 일단 필자를 믿고 밑으로 내려가면 된다.

먼저, 빠른 이해를 위해 바로 코드로 들어가 보겠다.

 

persistence.xml

 

사진이 잘 보이지 않는 다면 아래의 소스코드를 참고해도 좋다.

 

persistence.xml 코드

<?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"/>
            <!--            mysql debug mode, 실제 쿼리가 로그로 보임-->
            <property name="hibernate.format_sql" value="true"/>
            <property name="hibernate.use_sql_comments" value="true"/>
        </properties>
    </persistence-unit>
</persistence>

 

자, 이제 코드를 하나씩 뜯어서 설명해주겠다.

먼저 property name="javax.persistence" 로 시작하는 코드는 hibernate 라이브러리 말고 다른 JPA 라이브러리를 써도 바꿀 수 있다는 말이다. 

 그 말인 즉, property name="hibernate" 속성으로 시작하는 코드는 Hibernate 전용 옵션이라는 뜻이다.

 


간단하게 hibernate에 대해 소개하면

 

Hibernate란,자바 언어를 위한 ORM 프레임워크이다.

JPA 인터페이스를 구현한다.

 

hibernate의 장점

  • 생산성이 좋다.
    • SQL을 직접 사용하지 않고, 메서드 호출만으로 쿼리가 실행한다.
    • 개발자가 복잡한 SQL을 직접 짜지 않아도 돼 생산성이 높아진다.
  • 유지보수
    • 테이블 컬럼이 변경되었을 때, 테이블과 관련된 작업을 대신 수행해주기 때문에 유지보수가 잘된다. 

 


 

위 코드는 DB에 보내지는 쿼리를 볼 것인지 선택하는 코드이다.

실제 쿼리가 로그로 보인다.

value="true"일 경우 DB에 보내지는 쿼리를 확인할 수 있다.

 

위 코드는 sql 로그를 포맷팅(formatting)해서 코드를 보여주겠다는 뜻이다.

 

cmd에서 다음의 밑줄 친 부분의 코드가 hibernate.format_sql에 해당한다.

 

위 코드는 다음의 쿼리가 왜 나오게 되었는지를 보여준다.

예를 들어 사용자가 insert(삽입) 를 실행했을 경우

 

밑줄친 부분과 같은 insert 쿼리 문이 실행되었음을 알려준다.

 


 

자, 이제 옵션에 대해 알아봤으니 

다음 포스팅에서는

본격적으로 데이터베이스를 연결해 

등록(Create)/수정(Update)/삭제(Delete)/조회(Read)를 해보자.

 

 

참고

 

[DB] 하이버네이트(Hibernate)란?

ORM 기술에 대한 명세인 JPA(Java Persistence API)의 구현체의 한 종류 JPA의 구현체이므로 JPA의 특징을 함께 정리했어요. Hibernate란? 하이버네이트는 자바 언어를 위한 ORM 프레임워크에요. JPA의 구현체

livenow14.tistory.com

반응형