Server
[H2 DB] H2 Database & Spring Boot 연동 방법
JinCode
2022. 2. 28. 22:10
H2 Database & Spring Boot 연동 방법
Spring Boot, H2 무설치 연동 방법 : https://adg0609.tistory.com/65
1. H2 DB 설치
| <다운로드> 사이트에 접속 한 뒤, H2 DB를 설치하시면 됩니다.
※ 1.4.200 버전 이상을 설치하면 보안상으로 JPA에서 테이블 자동생성 기능이 되지 않습니다.
1.4.200버전 혹은 이전 버전을 원하시면 <이전 버전 다운로드> 에서 설치할 수 있습니다.
2. 배치 파일 실행(h2.bat)
| 기본 경로에 설치하셨다면 C:\Program Files (x86)\H2\bin 폴더안에 h2.bat 파일을 실행하면 cmd와 h2 콘솔이 자동으로 브라우저에 뜨게 됩니다.
3. DB 생성 및 접속
JDBC URL 주소에 있는 jdbc:h2:~/test2 해당 부분의 뒷 부분이 DB파일명 입니다.
1. 데이터베이스가 없을 경우(생성) : jdbc:h2:~/데이터베이스명
2. 데이터베이스가 있을 경우(접속) : jdbc:h2:tcp://localhost/~/데이터베이스명
3-1. 데이터베이스 파일 위치
| 생성한 데이터베이스 파일 위치는 C:\Users\사용자 내에 위치하며 확장자는 .mv 입니다.
4. Spring Boot와 H2 DB 연동
spring:
datasource:
url: jdbc:h2:tcp://localhost/~/데이터베이스명
username: sa
password:
driver-class-name: org.h2.Driver
| application.yml 에서 설정을 해야 합니다.
4.1 테스트
## User.class
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column
private String name;
@Column
private int age;
@Builder
public User(String name, int age) {
this.name = name;
this.age = age;
}
}
## DbConnection.class
public interface DbConnection extends JpaRepository<User, Long> {
}
## ApplicationTest.class
@Test
public void findAllUserTest() {
User user1 = User.builder()
.name("user1")
.age(23)
.build();
User user2 = User.builder()
.name("user2")
.age(25)
.build();
dbConnection.save(user1);
dbConnection.save(user2);
final List<User> all = dbConnection.findAll();
for (User user : all) {
System.out.println("user = " + user.getName());
}
}
| User Entity를 생성하고 Spring Data Jpa로 테스트를 해 보았습니다.
2022-02-28 22:08:15.208 DEBUG 2444 --- [ main] org.hibernate.SQL :
insert
into
user
(id, age, name)
values
(default, ?, ?)
2022-02-28 22:08:15.211 TRACE 2444 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [INTEGER] - [23]
2022-02-28 22:08:15.212 TRACE 2444 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [VARCHAR] - [user1]
2022-02-28 22:08:15.224 DEBUG 2444 --- [ main] org.hibernate.SQL :
insert
into
user
(id, age, name)
values
(default, ?, ?)
2022-02-28 22:08:15.225 TRACE 2444 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [INTEGER] - [25]
2022-02-28 22:08:15.225 TRACE 2444 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [VARCHAR] - [user2]
2022-02-28 22:08:15.317 DEBUG 2444 --- [ main] org.hibernate.SQL :
select
user0_.id as id1_0_,
user0_.age as age2_0_,
user0_.name as name3_0_
from
user user0_
2022-02-28 22:08:15.319 TRACE 2444 --- [ main] o.h.type.descriptor.sql.BasicExtractor : extracted value ([id1_0_] : [BIGINT]) - [1]
2022-02-28 22:08:15.320 TRACE 2444 --- [ main] o.h.type.descriptor.sql.BasicExtractor : extracted value ([age2_0_] : [INTEGER]) - [23]
2022-02-28 22:08:15.321 TRACE 2444 --- [ main] o.h.type.descriptor.sql.BasicExtractor : extracted value ([name3_0_] : [VARCHAR]) - [user1]
2022-02-28 22:08:15.321 TRACE 2444 --- [ main] o.h.type.descriptor.sql.BasicExtractor : extracted value ([id1_0_] : [BIGINT]) - [2]
2022-02-28 22:08:15.321 TRACE 2444 --- [ main] o.h.type.descriptor.sql.BasicExtractor : extracted value ([age2_0_] : [INTEGER]) - [25]
2022-02-28 22:08:15.321 TRACE 2444 --- [ main] o.h.type.descriptor.sql.BasicExtractor : extracted value ([name3_0_] : [VARCHAR]) - [user2]
user = user1
user = user2
| insert 및 find가 잘 작동하는것을 볼 수 있습니다.