1 분 소요

✔ Hello JPA 프로젝트 생성

  • H2 데이터베이스
    • 연습용 DB
    • 다른 DB에 비해 가벼움
    • DB 시뮬레이션 가능
    • 시퀸스, AUTO INCREMENRT 기능 지원

프로젝트 생성

  • 자바 8이상
  • 메이븐 설정
    • groupId: jpa-basic
    • artifacId: ex1-hello-jpa
    • version 1.0.0
  • 하이버네이트 공식 사이트
  • 스프링 공식 사이트
    • Spring
    • Hibernate가 결국 Spring F/W랑 엮이는 부분이 있음
      • Spring -> Projects -> Spring Boot -> Learn
      • Spring boot 버전 확인 후
  • 스프링 프로젝트 생성

JPA 설정

JPA 설정 파일:
  - 위치: /META-INF/persistence.xml
  - persistence-unit name으로 이름 지정
  - javax.persistence로 시작: JPA 표준 속성
  - hibernate로 시작: 하이버네이트 전용 속성
<?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.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/>-->

            <!-- 옵션 -->
            <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.jdbc.batch_size" value="10"/>
            <property name="hibernate.hbm2ddl.auto" value="update" />
        </properties>
    </persistence-unit>
</persistence>
  1. persistence version : JPA 2.2
  2. persistence-unit name=”hello”: JPA를 쓸건데 이름은 어떤걸 쓸것인가?
  3. 필수속성 - 옵션 설정

데이터베이스 방언

  • JPA는 특정 데이터베이스에 종속적이지 않다
  • 각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다름
    • 가변 문자 : MySQL은 VARCHAR, Oracle은 VARCHAR2
    • 문자열을 자르는 함수 : MySQL은 SUBSTRING, Oracle은 SUBSTR
    • 페이징 : MySQL은 LIMIT, Oracle은 ROWNUM
  • SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능
  • 즉, SQL 표준에 상관없이 DataBase를 이용할 수 있다는 의미

Javax & Hibernate

  • javax : Java의 표준을 지키는 라이브러리
  • Hibernate : Hibernate 전용 옵션

댓글남기기