영한찡과 함께하는 즐거운 실습시간~
프로젝트 생성 시 Maven 원형으로 하지 말고 새 프로젝트로 만들어준다.
다음으로 데이터 베이스는 실습용으로 최고인 H2 DB!
H2 Database Engine (redirect)
H2 Database Engine Welcome to H2, the free SQL database. The main feature of H2 are: It is free to use for everybody, source code is included Written in Java, but also available as native executable JDBC and (partial) ODBC API Embedded and client/server mo
www.h2database.com
가볍고 시퀀스 기능과 AUTO INCREMENT 기능도 지원해준다.
문제의 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 |