Java - SpringJPA

Spring JPA (1) - JPA 기본 & JPA 프로젝트 생성

TerianP 2022. 9. 28.
728x90

Spring JPA  포스팅은 모두 인프런 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의를 정리한 글입니다.

1. JPA 란?

  • Java Persistence API : JPA는 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음

 

2. ORM 이란?

  • Object-relational mapping ⇒ 객체 관계 매핑
  • 객체는 객체대로 설계
  • 관계형 데이터베이스는 관계형 데이터베이스 대로 설계
  • ORM 프레임워크가 중간에서 매핑!! ⇒ 대중적인 언어에서는 대부분 ORM 기술이 존재

 

3. JPA 의 동작 원리

  • 개발자가 직접 DB 에 SQL 을 날리는게 아니라 JPA 가 JDBC API 를 경유해서 DB 에 쿼리문을 날리고 이를 기반으로 결과를 얻어옴
  • 이때 쿼리문 역시 JPA 가 생성!!

 

4. 그래서 왜 JPA?

  • SQL 중심적인 개발 → 객체 중심으로 개발 전환
  • 생산성 && 유지보수
  • 패러다임의 불일치 해결 → RDB 의 구조적 부분과 객체 지향적인 부분의 차이점 관점을 해결
  • 성능 Good
  • SQL 을 내가 짤 필요가 없다 ← 제일 중요

 

5. JPA 와 데이터베이스 방언

  • JPA 의 가장 큰 특징 중 하나는 특정 db 에 종속적이지 않는다는 점
  • 각각의 db 가 제공하는 문법과 함수는 조금씩 다름
    • 가변 문자 : varchar, varchar2
    • 문자열 자르는 함수 : sumbstring(), substr()
  • 따라서 sql 종속적이지 않는다는 특징을 지키기 위해 jpa 는 dialect 라는 옵션을 제공하고 이를 통해서 특정 DB 에 딱 맞게 sql 을 안짜도 알아서 jpa 가 번역해서 sql을 만들어줌
H2 : org.hibernate.dialect.H2Dialect
Oracle 10g : org.hibernate.dialect.Oracle10gDialect
Mysql : org.hibernate.dialect.MySQL5InnoDBDialect

 

 

5. JPA 프로젝트 생성

  • Hibernate 라이브러리 다운로드
<!-- JPA 하이버네이트 -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.3.10.Final</version>
				</dependency>

 

  • persistence.xml 생성 ⇒ 위치는 /resources/META-INF/
<?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>
            <!-- 필수 속성 -->
            <!--
                DB 접근 정보
                1. DB 드라이버
                2. DB 유저 ID
                3. DB 패스워드
                4. DB 주소(url)
                5. DB dialect 지정
            -->
            <property name="javax.persistence.jdbc.driver" value="DB 드라이버"/>
            <property name="javax.persistence.jdbc.user" value=DB ID"/>
            <property name="javax.persistence.jdbc.password" value="DB pwd"/>
            <property name="javax.persistence.jdbc.url" value="DB 주소"/>
            <property name="hibernate.dialect" value="DB dialect 지정"/>

            <!-- 옵션 -->
            <!--
                JPA 옵션
                1. hibernate 를 사용할때 쿼리문을 보여줌
                2. hibernate 를 사용할 때 쿼리문을 이쁘게 보여주도록 만듦
                3. hibernate 를 사용할 때 추가적인 주석 표시
            -->
            <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>

 

댓글