springboot -JPA-h2 database 사용하기

씩씩한 조약돌·2024년 4월 6일
0

코드 기록🤓

목록 보기
28/31

개발환경
인텔리제이
springBoot3.2.4
java17
gradle

1. build.gradle

  • lombok
  • spring-boot-starter-data-jpa
  • h2database
dependencies {
	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	runtimeOnly 'com.h2database:h2'
}

2. application.properties

# 한글 인코딩
server.servlet.encoding.force=true
# H2 DB 웹콘솔 접근 허용 localhost:8080/h2-console
spring.h2.console.enabled=true

3. entitiy class 생성

package com.example.ywproject.entitiy;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.ToString;

import java.sql.Date;

@Entity
@AllArgsConstructor
@ToString
public class TB_BBS {
    @Id
    @GeneratedValue
    private Long id;

    @Column
    private String title;

    @Column
    private String writer;

    @Column
    private String content;

    @Column
    private Date crt_dt;
}

4. DAO interface생성

  • CrudRepository<T, ID>를 extends받고 <table이름, id타입>을 입력
  • <TB_BBS, Long>
package com.example.ywproject.dao;

import com.example.ywproject.entitiy.TB_BBS;
import org.springframework.data.repository.CrudRepository;

public interface TB_BBS_DAO  extends CrudRepository<TB_BBS, Long> {
}

5. localhost:8080/h2-console

  • 스프링부트 실행시키고 localhost:8080/h2-console에 접속하면 아래같은 화면이 뜸

  • 콘솔창에 jdbc:h2를 검색해서 url찾기

  • url 입력하고 connect

  • entity로 입력한 테이블 확인

6. 고정URL 설정

  • applicaiton.propeties에 내용추가
# DB URL 설정
spring.datasource.generate-unique-name=false
spring.datasource.url=jdbc:h2:mem:testdb


7. 더미데이터 자동으로 넣기

  • h2데이터베이스는 서버 껐다 키면 리셋됨
  • src\main\resources에 data.sql 파일 생성 후 추가할 쿼리 입력
ALTER SEQUENCE tb_bbs_seq INCREMENT BY 1;
INSERT INTO tb_bbs (ID, title, content, writer, crt_dt) VALUES (NEXT VALUE FOR tb_bbs_seq, 'test title', 'test content', 'test writer', CURRENT_TIMESTAMP);
INSERT INTO tb_bbs (ID, title, content, writer, crt_dt) VALUES (NEXT VALUE FOR tb_bbs_seq, 'test title2', 'test content2', 'test writer2', CURRENT_TIMESTAMP);
INSERT INTO tb_bbs (ID, title, content, writer, crt_dt) VALUES (NEXT VALUE FOR tb_bbs_seq, 'test title3', 'test content3', 'test writer3', CURRENT_TIMESTAMP);
  • applicaiton.properties 내용추가
# 더미데이터 입력
spring.jpa.defer-datasource-initialization=true
  • 서버 켜서 접속

참고서적 : 스프링부트3 자바백엔드개발입문

profile
씩씩하게 공부중 (22.11~)

0개의 댓글