04. Hello JPA - 프로젝트 생성

김성수·2023년 4월 3일
0

⚡ 생각대로 살지 않으면 사는대로 생각한다.

⚡ 나는 어차피 잘 될 놈이다. 이미 잘 되고 있고, 계속해서 잘 되고 있다.


H2 데이터베이스

  • 실습용으로 좋음.
  • 가볍다.
  • 웹으로 쿼리 날릴 수 있도록 제공.
  • MySQL, Oracle 데이터베이스 시뮬레이션 기능
  • 시퀀스, AUTO INCREMENT 데이터베이스 시뮬레이션 가능
  • 간단하게 DB를 띄우지 않고 사용가능

H2를 다운 후

  • Windows에서 h2.bat을 실행한다.
  • 저장한 설정 : Generic H2 (Server)로 지정. 설정이름도 바뀜
  • JDBD URL : jdbc:h2:~/test

메이븐

  • 자바 라이브러리, 빌드 관리
  • 라이브러리 자동 다운로드 및 의존성 관리
  • 최근에는 그래들(Gradle)이 점점 유명해짐.

프로젝트 생성

  • 자바 8 이상 (혹시 안 된되면..)

Hibernate 강의 시점 최신버전은 Hibernate ORM 5.4
지금은 6.2 (LTS는 6.1)

나중에 스프링이랑 엮여서 실행되어야 한다.
💡이 때 버전 TIP
Spring 홈페이지 -> Project -> Spring Boot -> 내가 사용할 Spring Boot의 공식문서(Reference Doc) -> ctrl + F : org.hibernate를 쭉쭉 찾다보면, 목록에서 딱 Hibernate 버전을 가리키는 부분이 나온다.

pom.xml

xml을 이렇게 설정하면,

연관 라이브러리를 땡겨오는데,

  • org.hibernate:hibernate-core:5.3.10.Final
    • 핵심 코어 라이브러리
  • `javax.persistence:javax.persistence-api:2.2
    • JPA는 인터페이스, 그 구현체가 Hibernate
    • 사용할 JPA 인터페이스들이 모여져있는 api

H2 데이터베이스 라이브러리또한 주입받음.

이때 다운 받은 H2데이터 베이스와 똑같은 버전으로 맞춰줘야 함! (난 200으로!)

JPA 설정 - persistence.xml

  • 경로(표준이므로 중요!)
    • src/main/resources/META-INF/persistence.xml에 위치해야 함.
  • 이름 지정
  • 필수 속성을 지정해줘야함
    • JPA는 데이터베이스를 사용하기 때문에 데이터베이스 접근 정보를 적어줘함..

데이터베이스 방언(Dialect)

  • JPA는 특정 데이터베이스에 종속X
  • 각각의 데이터베이스가 제공하는 SQL문법과 함수는 조금씩 다르다.
    • 가변 문자 : MySQL은 VARCHAR, Oracle은 VARCHAR2
    • 문자열을 자르는 함수 : SQL표준은 SUBSTRING(), Oracle은 SUBSTR()
    • 페이징 MySQL은 LIMIT, Oracle은 ROWNUM
  • 방언 : SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능

hibernate.dialect 속성에 지정

  • H2 : org.hibernate.dialect.H2Dialect
  • Oracle 10g : org.hibernate.dialect.Oracle10gDialect
  • MySQL : org.hibernate.dialect.MySQL5InnoDBDialect

하이버네이트는 40가지 이상의 데이터베이스 방언 지원


위 프로터피 속성중에서, 어떤 것은 javax로, 어떤것은 hibernate로 시작되는데, 이 둘의 차이점은

  • javax는 JPA의 구현체인 Hibernate말고, 다른 JPA 구현라이브러리를 사용해도 바꿀 수 있지만,
  • Hibernate로 시작하는 것은 Hibernate에서만 적용되는 Hibernate 전용 라이브러리이다.
    • 다른 JPA 구현체도 마찬가지다.

property name="hibernate.show_sql"는 SQL을 볼것이냐 말것이냐에 대한 설정이다.


-끝-

profile
쌩수 Git >> https://github.com/SsangSoo?tab=repositories

0개의 댓글