h2 db 연동 및 엔티티 생성 -(4)

xxx-sj·2023년 6월 23일
0

이번에는 간단한 테이블 2개를 만들고, h2 database와 연동을 하려 합니다.

의존성 추가

먼저 dependency를 추가해 줍니다. JPA도 사용할 예정이니 JPA도 추가해 줍니다.

	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	runtimeOnly 'com.h2database:h2'

H2 설정

다음으로는 h2 database에 대한 정보를 설정해줍니다.
현재 사용중인 spring-boot version은 2.7.12 이며, 해당 버전에 맞는 h2 database 버전은 2.1.214 입니다.

DB 파일생성

어느 버전 이상부터 path로 접근하여 파일을 만들었던 것이 적용이 되지 않아서, 제가 사용한 방법은 저장하려는 위치에

[data-base name].mv.db

와 같은 식으로 파일을 만들어서 해당 파일에 tcp로 접근하는 것으로 해결하였습니다. 여기에서는 [ my-project.mv.db ] 로 파일을 만들었습니다.

이제 h2 console을 실행하고 접속을 해보도록 하겠습니다.
현재 제 파일의 위치는 D:\H2\db\my-project 입니다.

해당 정보로 연결을 시도하면 정상적으로 연결이 되는 것을 확인할 수 있습니다.

spring-boot 접속 정보 설정

이제 위의 정보를 바탕으로 spring-boot에 접속정보를 설정하도록 하겠습니다.
먼저 h2 db property 설정은 src/main/resources/application.properties에 설정하면 되는데 저는 여기서 .properties 가 아닌 .yml를 사용하도록 하겠습니다.

//application.yml

spring:
  datasource:
    url: jdbc:h2:tcp://localhost/D:\H2\db\my-project
    username: sa
    password:
    driver-class-name: org.h2.Driver

url은 h2 console에서 접속할 때 사용한 JDBC URL 입니다.

entity 생성

여기서는 ORM을 사용하기에 간단한 entity를 만들어보도록 하겠습니다.

2개의 엔티티를 만들건데요, posts와 comments를 만들 예정입니다.

연관관계

posts: 제목과 내용에 대한 컬럼이 존재한다.
comments: posts의 댓글에 해당하는 엔티티이다.

posts와 comments 는 1:N 관계를 갖고있으며, 서로 양방향 관계를 맺고 있습니다.

//Posts

package com.demo.myproject.domain;


import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

@Entity
@Getter
@NoArgsConstructor
public class Posts {
    @Id
    @Column(name = "PTS_ID")
    @GeneratedValue
    private Long id;

    @Column(name = "PTS_TITLE")
    private String title;

    @Column(name ="PTS_CONTENT")
    private String content;

    @OneToMany(mappedBy = "posts", fetch = FetchType.LAZY)
    private List<Comment> commentList = new ArrayList<>();
}
//comments

package com.demo.myproject.domain;


import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.persistence.*;

@Entity
@Getter
@NoArgsConstructor
public class Comment {

    @Id
    @GeneratedValue
    @Column(name = "CMT_ID")
    private Long id;

    @Column(name = "CMT_CONTENT")
    private String content;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "POSTS_ID")
    private Posts posts;

}

jpa property 설정

마지막으로 나머지 jpa property를 설정하도록 하겠습니다.

//application.yml

  jpa:
    #hibernate setting
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        #system.out
        show_sql: true
        #format pretty
        format_sql: true

#logging
  logging:
    level:
      org.hibernate:
        # sql leverl
        sql: debug
        # sql show sql parameter
        type: trace    

이제 spring-boot를 실행 후 h2 console에 들어가보면 생성한 entity가 생성된 것을 확인할 수 있습니다.

-끗-

profile
틀려도 일단 기록하자

0개의 댓글