본문 바로가기
Spring

1. JPA 실습 - 프로젝트 설정 및 JPA 기초 개념

by 토니짱 2022. 9. 30.

영한찡과 함께하는 즐거운 실습시간~

프로젝트 생성 시 Maven 원형으로 하지 말고 새 프로젝트로 만들어준다.

 

다음으로 데이터 베이스는 실습용으로 최고인 H2 DB!

 

문제의 pom.xml

롸.? 이렇게 하라는 대로만 하면 오류가 난다.

 

자바 8버전을 사용 중이라면 그대로 사용해도 되지만 나는 자바 11을 사용 중이었기 때문에 dependency를 추가해주어야 했다.

 

JPA는 데이터베이스 방언이라고 표현한다.

제주도 사람이 제주도 사투리를, 서울 사람이 서울 사투리를 쓰듯이

JPA는 각 데이터베이스의 문법과 함수를 적용해준다.

  • 가변문자 : MySQL은 VARCHAR / Oracle은 VARCHAR2
  • 문자열 자르는 함수 : SQL 표준은 SUBSTRING() / Oracle은 SUBSTR()
  • 페이징 : MySQL은 LIMIT / Oracle은 ROWNUM

데이터베이스 방언

property의 hibernate.dialect 속성에 지정해주면 된다.

H2 : org.hibernate.dialect.H2Dialect

Oracle 10g : org.hibernate.dialect.Oracle10gDialect

MySQL : org.hibernate.dialect.MySQL5lnnoDBDialect

이 외에도 40가지 이상의 방언을 지원한다.

 

JPA구동 방식

Main 함수에서 실행 시 엔티티 매니저 팩토리를 생성하여 애플리케이션 전체에서 공유한다.

공장에서 엔티티 매니저가 생겨난다.

엔티티 매니저는 각 트랜잭션을 맡아서 관리한다.

 

 

객체와 테이블 매핑하기

데이터베이스에 테이블을 만들고 객체를 만들어 매핑해준다.

@Entity : JPA가 관리할 객체

@Id : 데이터베이스의 PK와 매핑

 

주의할 점!

엔티티 매니저 팩토리는 하나만 생성!

엔티티 매니저는 스레드 간에 공유를 하지 않는다.

JPA의 모든 데이터 변경은 트랜잭션 안에서 실행된다.

 

JPQL

JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공한다.

SQL은 테이블을 대상으로 쿼리를 만들지만 JPQL은 엔티티 객체를 대상으로 쿼리를 만든다.

반응형

'Spring' 카테고리의 다른 글

스프링 컨테이너와 스프링 빈  (0) 2022.10.03
JPA - 영속성관리  (1) 2022.09.30
JPA가 뭘까?  (0) 2022.09.29
Spring-OOP와 스프링  (0) 2022.09.25
AOP(Aspect Oriented Programming)  (1) 2022.09.25