"인프런의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의를 듣고 작성한 글 입니다."
[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확인해주세
www.inflearn.com
데이터베이스를 직접 사용해보자.
지금까지는 데이터를 메모리에 저장하는 방식으로 했기 때문에 서버를 멈춰버리면 메모리에 저장된 데이터들이 모두 날아갔다.
실무에서는 그렇게 되서는 안되기 때문에 데이터베이스를 활용하여 데이터를 저장해준다.
이번엔 가볍고 심플한 H2 데이터베이스를 통해 실습을 진행해보자.
H2 데이터 베이스 설치
H2 데이터베이스 설치 과정은 아래의 링크를 참조하도록 하자.
https://evan-development.tistory.com/8?category=941005
JPA 와 H2 데이터베이스 간 연결
"인프런 - 자바 ORM 표준 JPA 프로그래밍 강의를 듣고 작성한 글 입니다." www.inflearn.com/course/ORM-JPA-Basic# 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 JPA를 처음 접하거나, 실무에서 JPA를 사용하..
evan-development.tistory.com
데이터베이스가 설치되고 나면?
데이터베이스가 설치되고 나면 SQL 을 가지고 어플리케이션 서버와 DB 를 연결해주어야 한다.
이것을 연결할 때 필요한 기술이 바로 JDBC 라는 기술이다.
앞으로의 강의 정리글 에서는 순수 JDBC 를 활용해봄으로서 20년쯤 전의 개발자들은 어떤 방식으로 개발을 했는지 알아볼 것이다.(JPA 와 같은 ORM 이나 MyBatis 같은 SQL Mapper 가 없던 시절)
순수 JDBC 만으로는 영....
순수한 JDBC 만으로는 개발을 하기가 쉽지 않다.
그렇기에 스프링이 중복을 제거해주는 등의 기능을 지원해주는 스프링 JDBCTemplate 이라는 기술이 있다.
이를 통해 어플리케이션에서 데이터베이스로 SQL 을 편리하게 전달해 줄 수 있다.
이보다도 더 혁신적인 방법이 바로 JPA 와 같은 ORM 을 활용하는 것이다.
JPA는 조회, 수정, 삭제와 같은 쿼리들을 대부분 자동으로 작성해줘서 데이터베이스로 전달해주기 때문에 개발자들이 직접 SQL 을 작성해주지 않고도 객체를 데이터베이스에 저장 할 수 있도록 도와준다.
(복잡한 조건이 필요한 쿼리의 경우 JPQL 같은 것을 활용하여 쿼리를 개발자가 직접 작성해 줄 수도 있다.)
그리고 이것을 스프링에서 JPA 를 편리하게 사용할 수 있도록 한번 감싸준 것을 스프링 데이터 JPA 라고 한다.
지금까지 해왔던 실습들을 위의 내용들을 하나하나 적용해보면서 바꿔나가 보도록 하자.
(MemoryMemberRepository 를 JdbcMemberRepository, JpaMemberRepository 와 같은 모습들로 바꿔나간다.)
(번외 : 보통 데이터베이스는 실무에서는 MySQL 이나 오라클 같은 것을 사용하는데, 그 중에서도 보통 MySQL 계열의 DB 를 많이 쓴다.)
다시 돌아와서....
H2 데이터베이스의 경우 최초로 사용할 시 데이터베이스 파일을 만들어야 한다.
처음 H2 데이터베이스 콘솔을 실행했을 경우 JDBC URL 은 다음과 같은 것이다.
JDBC URL : jdbc:h2:~/test
여기서 ~/test 는 현재 연결되는 데이터베이스 파일의 경로를 의미한다.(home 에 있는 test 파일에 연결한다.)
사용자 명은 sa 로 그대로 두고 비밀번호는 비워둔 뒤 연결을 누르면 정상적으로 잘 연결이 되는 것을 확인해 볼 수 있다.(test 파일이 해당 경로에 생성됨)
파일이 잘 생성되었는지는 리눅스와 같은 터미널 환경을 통해 home 경로에서 ls 와 같은 명령어로 확인해 볼 수 있다.
파일을 생성한 이후부터는 파일로 접근하게 되면 어플리케이션과 H2 콘솔에서 동시에 같은 파일에 접근하는 과정에서 충돌이 발생할 수 있으므로 콘솔에서 URL 을 변경해 주어야 한다.
URL 을 아래와 같이 바꿔주자.
JDBC URL : jdbc:h2:tcp://localhost/~/test (네트워크 소켓을 통한 접속)
데이터베이스 연결에 성공했으면 아래와 같은 SQL 쿼리를 작성하고 실행해준다.
drop table if exists member CASCADE;
create table member
(
id bigint generated by default as identity,
name varchar(255),
primary key (id)
);
id 컬럼의 경우 자바에서 Long 타입으로 지정해 줬으므로 그에 맞게 bigint 타입으로 지정해주었다.
generated by default as identity 의 경우 이를 작성해준 컬럼에 값이 세팅되어 있지 않은 상태로(null) 데이터가 들어오면 DB 가 자동으로 해당 컬럼의 값을 채워주는 역할을 해준다.
그 이외로는 name 컬럼을 만들어주었고, 기본키 로는 id 컬럼을 지정해주었다.
본격적으로 테이블에 데이터를 넣어보자.
아래와 같은 쿼리를 작성하고 실행한다.
insert into member(name) values('spring')
데이터를 넣었으니 이번엔 테이블에 데이터가 잘 들어갔는지 검색 쿼리를 통해 확인해보자.
select * from member
위의 쿼리를 실행 시 데이터가 정상적으로 잘 삽입되어 있는 것을 확인할 수 있다.
테이블을 자세히 확인해보면 insert 쿼리에서 삽입해주지 않은 id 컬럼에 대한 값이 자동으로 지정되어 있는 것을 알 수 있다.
데이터를 하나 더 넣어보자.
insert into member(name) values('spring2')
다시 한번 검색 쿼리를 실행해보면 또다시 데이터가 잘 삽입된 것을 확인할 수 있다.
(id 값은 자동으로 1 증가해서 삽입되었다. - 메모리에 데이터를 저장할 때 sequence 방식을 통해 데이터 값을 1씩 늘린것과 똑같은 원리이다.)
* 번외
프로젝트 폴더 상에 sql 폴더를 만들고 그 안에 ddl.sql 파일을 하나 만들자.
ddl.sql 파일 안에서 실습을 하며 작성했던 쿼리들을 작성하여 보관해두면 깃 커밋내역을 살펴보면서 변경 내역이 어떻게 되는지에 대한 관리를 할 수 있게 될 것이다.
다음 강의부터는 h2 콘솔에서가 아닌 어플리케이션에서 데이터베이스에 접근함으로서 본격적으로 스프링 DB 접근 기술에 대한 학습을 시작해보자.
'Spring basic' 카테고리의 다른 글
스프링 입문 : 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 스프링 통합 테스트 (0) | 2021.11.10 |
---|---|
스프링 입문 : 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 순수 JDBC (0) | 2021.11.10 |
스프링 입문 : 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 회원 웹 기능 : 등록 및 조회 (0) | 2021.11.08 |
스프링 입문 : 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 회원 웹 기능 : 홈 화면 추가 (0) | 2021.11.08 |
스프링 입문 : 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 자바 코드로 직접 스프링 빈 등록하기 (0) | 2021.11.08 |