본문 바로가기

Web/spring

[spring gradle] h2 세팅해보기

728x90

 

 

무턱대고 구글링 블로그로 검색해서 맨땅에 헤딩처럼 작업해보기보다는

document 나 명세를 살펴보며 (비록 영어라 두통이 오더라도 😂)

그 기능을 개발한 사람의 생각도 들여다보며 공부하는 걸 시도해보는 중이다

 

앱개발 때도 느꼈는데

많은 사람들이 구글링이 개발의 답이라고 하지만

버전이 업그레이드 됨에 따라 맞지않은 옛날 글, 또는 잘못된 글도 너무 많다.

 

그래서 어느정도 앱을 알게 된 이후에 나도 문서를 살펴보며

진짜 그 기능에 포함되어있는 메소드들을 살펴보곤 했었다.

 

아직 봄이 안온 스프링 개발자지만, 얼른 따뜻한 봄을 맞이하기 위해

열심히 공부를 해본다!

 

일단, h2 데이터베이스와 JPA 를 공부하는데

대부분 maven 으로 되어있길래

 

gradle 로 한번 세팅해보려고한다.

 

 

 

 

 

 

 

 

 

 

 

 

http://www.h2database.com/html/features.html#connection_modes

 

Features

  Features Feature List H2 in Use Connection Modes Database URL Overview Connecting to an Embedded (Local) Database In-Memory Databases Database Files Encryption Database File Locking Opening a Database Only if it Already Exists Closing a Database Ignore

www.h2database.com

 

 

매우 빠르고, 오픈소스에, 자바로 만들어진 SQL과 JDBC 명세로 만들어진, 임베디드 서버모드가 있는 어쩌구 저쩌구

항상 처음은 잘 알겠다 그 이후가 문제지

ㅋㅋㅋㅋㅋ

 

 

 

h2.sh 를 열고, 해당 정보로 프로젝트를 시작한다

 

 

application.properties

 

spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true


spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

spring.jpa.hibernate.ddl-auto=create-drop

hibernate.hbm2ddl.auto 옵션 설명

 

create : 기존 테이블 삭제 후 다시 생성한다 (DROP + CREATE)

create-drop : create와 같으나 종료시점에 테이블 DROP

update : 변경분만 반영(운영DB에는 사용하면 안됨) - 컬럼 추가는 가능 / 제거는 안됨

validate : 엔티티와 테이블이 정상 매핑되었는지만 확인

none : 사용하지 않음

 

 

 

 




import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Member {

    @Id @GeneratedValue
    private Long Id;

    private String email;

    private String password;

    private String name;



}

 

 

 

 

 

간단하게 생성완료

 

 

 

 

- JPA 구동방식

Persistence 라는 클래스를 이용하여 설정정보를 조회 후

EntityManagerFactory 를 이용하여 엔티티매니저를 관리

 

 

객체 매핑 @Entity

pk 설정 → @Id

 

entity manager factory 는 하나만 생성해서 전체에 공유

entity manager 는 쓰레드간에 공유하면 안됨. 사용 후 버려야함

JPA 모든 데이터 변경은 트랜잭션 안에서 실행됨

 

 

 

https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto.data-access.use-traditional-persistence-xml

728x90