[Spring] Spring Boot - 입문(16) - 스프링 DB 접근 기술 + H2 DataBase + generated by default as identity + JDBC + JPA
스프링 DB 접근 기술
지금까지는 메모리에 저장을 했었다. 오늘은 DB를 이용해서 데이터를 저장할 수 있도록 배워보자!
H2데이터베이스를 설치해서 진행해보자. 실무에서는 MySQL 또는 Oracle을 많이 쓴다고 한다.
H2 데이터베이스는 교육용으로 좋다고 한다.
https://www.h2database.com/html/main.html
H2 Database Engine
H2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console application Small footprint: around 2.5 MB jar file size Supp
www.h2database.com
H2 데이터베이스 사이트에서 다운로드하고 bin폴더에 들어오면 아래와 같이 파일이 존재할 것이다.
윈도는 h2.bat파일을, 맥이면 h2.sh를 실행시키면 된다...(맥은 아마도..?)
(실행한 프로그램은 DB를 종료할 때까지 끄면 안 된다~! 끄면 접속이 끊김!!)
파일을 실행시키면 새로운 브라우저가 실행되면서 아래와 같이 화면이 뜨는 것을 볼 수 있을 것이다.
JDBC URL = DB 파일 경로를 나타낸다.
최초 1회만 그대로 연결을 눌러서 DB 파일을 생성해주자.
그리고 이후부터는 'jdbc:h2:tcp://localhost/~/test'로 접속을 해주자.
(WHy? :파일로 접근하면 충돌 가능성이 있기 때문에, 여러 군데에서 접근할 수 있도록 바꿔주는 거라고 한다.
그래서 파일을 직접 접근하는 게 아니라, 소켓을 통해서 접근하는 방식이다.)
사용자 폴더 안에 들어가 보면 아래와 같은 파일이 생성되었음을 볼 수 있다.
(문제가 있으면 다시 삭제했다가 처음부터 다시 실행시켜보자..!)
그리고 다시 연결을 시도하면 아래처럼 접속이 되는 것을 확인할 수 있다.
(개인적으로는 MySQL, Oracle보다 쉽게 접속이 가능해서 조금 놀랐다.)
이제 테이블을 만들어보자. 네모칸에 아래처럼 작성하고 실행을 누르면 쉽게 테이블이 생성된다.
필자도 H2는 처음 써봐서 조금 생소했다..
* generated by default as identity : null값이 들어오면 DB가 자동으로 값을 채워준다는 의미
create table member
(
id bigint generated by default as identity,
name varchar(255),
primary key(id)
);
SELECT 구문을 사용해보면 아래처럼 결과가 나온다.
(그리고 굳이 select를 타이핑 안 해도, MEMBER 테이블을 누르면 자동으로 SELECT구문이 뜬다.. 신기...)
이제 INSERT를 하고 나서, SELECT를 해보면 아주 잘 되는 것을 볼 수 있다!!!
INSERT INTO MEMBER (name) values ('spring');
그리고 강사님께서는 따로 폴더를 만들어서 sql을 저장해둔다고 하셨다.
협업을 할 때는, 형상관리가 중요하니까 변경되는 내용을 공유하려고 쓰신다고 하셨다.
앞으로 배우게 될 내용을 조금 정리해보면 이렇다고 한다.
1. 순수 JDBC
2. 스프링의 JDBC 템플릿에 의해서 SQL을 편리하게 날리는 방법
3. 쿼리 없이 SQL을 직접 만들어주는 JPA
기대된다!!!!