이번글은 스프링에서 H2-Database를 사용하는 설명할 것이다.
H2-Database는 Mysql,MariaDb등과 다르게 따로 설치하지 않고 의존성만 추가해주면 사용할 수 있는 인메모리 데이터베이스이다. H2-Database를 사용해서 DB를 설치하기전에 미리 테스트를 해볼 수 있다.
//Maven
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
//gradle
testImplementation group: 'com.h2database', name: 'h2', version: '1.4.200'
우선 메이븐,그레이들 각각 사용하는것에 맞게 의존성을 추가해주자.
다음으로는 resources디렉토리 밑에 위처름 schema.sql을 만들어주자.
ql파일은 각각 database에 들어갈 DDL문을 넣어놨다
테스트용 sql 내용은 아래와 같다.
//schema.sql
CREATE TABLE user (
id VARCHAR(45) NOT NULL,
password VARCHAR(45) NULL,
name VARCHAR(45) NULL,
PRIMARY KEY (id));
다음으로는 h2데이터베이스가 정삭적으로 작동하는지 jpa와 함께 알아보자.
우선 jpa로 DDL문으로 만든 테이블을 만들어주자.
@Getter
@Setter
@Entity(name = "User")
public class User {
@Id
private String id;
private String password;
private String name;
}
그 다음으로는 테이블을 이용해서 쿼리문을 수행할 repository를 만들자.
@Repository
public interface UserRepository extends JpaRepository<User,String> {
User getUserById(String id);
}
다음으로는 이제 컨트롤러로 직접 확인해보자.,
@RestController
public class IndexController {
private UserRepository userRepository;
public IndexController(UserRepository userRepository){
this.userRepository=userRepository;
}
@GetMapping("/user/{id}")
public User getUser(@PathVariable String id){
User user=new User();
user.setId(id);
user.setName("testMan");
user.setPassword("123456");
userRepository.save(user);
return userRepository.getUserById(id);
}
}
id를 가져와서 미리 준비해준 name과 password를 줘서 h2데이터베이스에 저장한뒤 리턴해주는 컨트롤러이다. 실행결과는 아래와 같이 잘된다.
다음으로는 h2의 특징인 h2-console사용법이다 h2-console은 다른 database와 같이 gui를 지원해주는 기능이다.
사용방법은 우선 application.properties에 아래의 문장을 넣어준다.
spring.h2.console.enabled=true
그 다음 h2-console에 접속하기 위해 url과 username을 알아야하기때문에 아래의 클래스파일을 만들어준다.
@Component
public class AppRunner implements ApplicationRunner {
@Autowired
DataSource dataSource;
@Override
public void run(ApplicationArguments args) throws Exception {
Connection connection=dataSource.getConnection();
System.out.println(connection.getMetaData().getURL());
System.out.println(connection.getMetaData().getUserName());
}
}
그리고 앱을 재실행하면 콘솔창에 아래와같이 나올것이다.
윗줄이 url 아래줄이 username이다.
그다음에 localhost:8080/h2-console에 접속하면 아래와 같이 나온다.
저기셔 jdb url과 username을 콘솔에 나온것과 같이 바꿔주고 Connect를 누르면 아래와 같이 나온다
보면 아까 만든 User테이블이 존재한다.
'Spring' 카테고리의 다른 글
Spring 단위테스트 -2 Data (0) | 2021.02.28 |
---|---|
Spring 단위테스트 - 1 (0) | 2021.02.28 |
스프링 HttpMessageConverters (0) | 2021.01.27 |
Autowired (0) | 2020.05.11 |
Environment (0) | 2020.05.11 |