[JPA] 프로젝트 생성
✔ 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>
- persistence version : JPA 2.2
- persistence-unit name=”hello”: JPA를 쓸건데 이름은 어떤걸 쓸것인가?
- 필수속성 - 옵션 설정
데이터베이스 방언
- JPA는 특정 데이터베이스에 종속적이지 않다
- 각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다름
- 가변 문자 : MySQL은 VARCHAR, Oracle은 VARCHAR2
- 문자열을 자르는 함수 : MySQL은 SUBSTRING, Oracle은 SUBSTR
- 페이징 : MySQL은 LIMIT, Oracle은 ROWNUM
- SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능
- 즉, SQL 표준에 상관없이 DataBase를 이용할 수 있다는 의미
Javax & Hibernate
- javax : Java의 표준을 지키는 라이브러리
- Hibernate : Hibernate 전용 옵션
댓글남기기