Spring boot2.x 에 H2 데이터베이스 코드 인 스 턴 스 통합

이 글 은 주로 Spring boot2.x 에 H2 데이터베이스 코드 인 스 턴 스 를 통합 하 는 것 을 소개 합 니 다.이 글 은 예제 코드 를 통 해 매우 상세 하 게 소개 되 어 있 으 며 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 으 므 로 필요 한 분 들 은 참고 하 시기 바 랍 니 다.
spring boot 에 통합
1.의존 도 추가

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
  <groupId>com.h2database</groupId>
  <artifactId>h2</artifactId>
  <scope>runtime</scope>
</dependency>

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
</dependency>
2.H2 관련 설정 추가,application.properties 파일 수정

spring.jpa.database=h2
spring.jpa.show-sql=true
#ddl    ,update create  

spring.datasource.url=jdbc:h2:./data/test;AUTO_SERVER=TRUE
spring.jpa.hibernate.ddl-auto=update
spring.datasource.username=sa
spring.datasource.password=123456
spring.datasource.driverClassName=org.h2.Driver

spring.h2.console.path=/h2-console
spring.h2.console.enabled=true
설명:
spring.datasource.url
데이터베이스 파일
(1)메모리 데이터베이스
jdbc:h2:mem:DBName
메모리 데이터베이스 의 데 이 터 는 메모리 에 존재 합 니 다.프로그램 이 멈 추 면 저장 되 지 않 고 잃 어 버 립 니 다.
eg:
spring.datasource.url=jdbc:h2:mem:test
(2)파일 데이터베이스
jdbc:h2:file:{FilePath}도 jdbc:h2:{FilePath}로 간략화 할 수 있 습 니 다.
FilePath 형식
  • a)./{path}/{fileName}현재 프로그램의 루트 디 렉 터 리 에 디 렉 터 리 와 데이터베이스 파일
  • 을 만 듭 니 다.
  • b)~/{path}/{fileName}현재 사용자 의 루트 디 렉 터 리 에 디 렉 터 리 와 데이터베이스 파일
  • 을 만 듭 니 다.
  • c)C:/{path}/{fileName}지정 한 디스크 의 지정 디 렉 터 리 에 데이터베이스 파일 을 만 듭 니 다
  • (3)원 격 데이터베이스
    jdbc:h2:tcp://<{IP|hostname}>[:{Port}]/[]<{dbName}>
    추가 매개 변수:
  • AUTO_SERVER=TRUE 는 자동 혼합 모드 를 시작 하여 여러 개의 연결 을 허용 합 니 다.이 매개 변 수 는 메모리 에서 실행 모드
  • 을 지원 하지 않 습 니 다.
  • DB_CLOSE_ON_EXIT=FALSE,가상 컴퓨터 가 종 료 될 때 데이터베이스
  • 을 닫 지 않 습 니 다.
    3.코드
    domain 계층,즉 User 클래스(entity)
    
    package com.example.demo.domain;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    import javax.persistence.*;
    
    @Entity
    @Table(name = "user")
    @Data
    public class User {
      @Id
      @GeneratedValue(strategy= GenerationType.AUTO)
      private int id;
      private String name;
    
      public int getId() {
        return id;
      }
    
      public void setId(int id) {
        this.id = id;
      }
    
      public String getName() {
        return name;
      }
    
      public void setName(String name) {
        this.name = name;
      }
    }
    dao 층,즉 UserRepository 인터페이스
    
    package com.example.demo.dao;
    
    import com.example.demo.domain.User;
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.stereotype.Repository;
    
    import java.util.List;
    
    @Repository
    public interface UserRepository extends JpaRepository<User,Integer> {
      List<User> getUsersByName(String Name);
    }
    controller 층,즉 데모
    
    package com.example.demo.controller;
    
    import com.example.demo.dao.UserRepository;
    import com.example.demo.domain.User;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.List;
    
    @RestController
    public class Demo {
      @Autowired
      private UserRepository repo;
    
      @RequestMapping("find")
      public List<User> find() {
        return (List<User>) repo.findAll();
      }
    }
    데모 응용 프로그램 작성
    
    package com.example.demo;
    
    import com.example.demo.dao.UserRepository;
    import com.example.demo.domain.User;
    import org.springframework.beans.factory.InitializingBean;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.Bean;
    
    @SpringBootApplication
    public class DemoApplication {
    
      @Bean
      InitializingBean saveData(UserRepository repo){
    
        return ()->{
          User u = new User();
          u.setName("abc");
          repo.save(u);
          User u1 = new User();
          u1.setName("zyx");
          repo.save(u1);
    
        };
      }
    
      public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
      }
    
    }
    프로젝트 시작,브 라 우 저 접근 열기http://localhost:8080/find

    방문 하 다.http://localhost:8080/h2-console/

    연결 후 데이터 조회

    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기