IT/Spring Boot
[Spring Boot] 5. H2 데이터베이스, JPA
우웅지
2024. 4. 4. 17:43
728x90
반응형
SMALL
H2 데이터베이스
데이터 베이스 설치하기
1. build.gradle 라이브러리 설치.
//h2 database
runtimeOnly 'com.h2database:h2'
build.gradle 파일 마우스 오른쪽 클릭 -> gradle -> Refresh Gradle Project 클릭.
2. application.properties 설정
#DATABASE
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.datasource.url=jdbc:h2:~/local
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
데이터베이스 설정 코드 추가.
- spring.h2.console.enabled : H2 콘솔 접속 여부
- spring.h2.console.path : H2 콘솔로 접속하기 위한 URL경로.
- spring.datasource.url : 데이터베이스에 접속하기 위한 경로.
- spring.datasource.driverClassName : 데이터베이스에 접속할 때 사용하는 드라이버 클래스명
- spring.datasource.username : 데이터베이스 사용자명
- spring.datasource.password : 데이터베이스 비밀번호
3. 데이터베이스 파일 생성
jdbc:h2:~/local 이렇게 설정했을 때 '~'는 사용자의 홈 디렉토리.
아래에 H2데이터베이스파일로 local.mv.db라는 파일을 생성한다.
copy con local.mv.db + (Ctrl+Z)
만들어진 것 확인.
4. H2 데이터베이스 접속
http://localhost:8080/h2-console
설정한대로 입력한 후 Connect클릭.
연결완료.
JPA
JPA 환경 설정하기
1. build.gradle에 라이브러리 추가
//JPA
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
build.gradle 파일 마우스 오른쪽 클릭 -> gradle -> Refresh Gradle Project 클릭.
2. applicaation.properties 수정
#JPA
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update
게시판 웹의 엔티티 작성
질문 엔티티
package com.mysite.sbb;
import java.time.LocalDateTime;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Entity
public class Question {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(length = 200)
private String subject;
@Column(columnDefinition = "TEXT")
private String content;
private LocalDateTime createDate;
//관계주입
@OneToMany(mappedBy = "question", cascade = CascadeType.REMOVE)
private List<Answer> answereList;
}
답변 엔티티
package com.mysite.sbb;
import java.time.LocalDateTime;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Entity
public class Answer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(columnDefinition = "TEXT")
private String content;
private LocalDateTime createDate;
//관계주입
@ManyToOne
private Question question;
}
728x90
반응형
LIST