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>
'Java - SpringJPA' 카테고리의 다른 글
Spring JPA (6) - JPA 개념 잡기 : 엔티티 연관관계 매핑 1:N, N:1, N:M, 1:1 (1) | 2022.10.03 |
---|---|
Spring JPA (5) - JPA 개념 잡기 : 단방향 연관관계, 양방향 연관관계, 연관관계의 주인 (0) | 2022.10.03 |
Spring JPA (4) - JPA 개념 잡기 : 객체-테이블 매핑, 필드와 칼럼, 기본키 매핑 (0) | 2022.10.02 |
Spring JPA (3) - JPA 개념 잡기 : 영속성 컨텍스트, 플러시, 준영속 상태 (0) | 2022.10.01 |
Spring JPA (2) - Entity 객체, JPA 로 DB 연결하기, 기본 문법 사용하기 (0) | 2022.09.29 |
댓글