-

[스프링부트 Step 15] - 데이터 베이스 설치 본문

백엔드 기술 정리/스프링 부트

[스프링부트 Step 15] - 데이터 베이스 설치

흣차 2022. 1. 6. 03:56
728x90
반응형

지난 포스팅에서 했던건 입력한 데이터를 메모리에 저장했다가 서버가 재가동되면 회원 데이터가 모두 사라지게 되므로 실무에선 이를 막기위해 DB에 데이터를 저장하고 관리합니다.

그래서 아주 간단한 DB인 H2를 한 번 사용해보도록 하겠습니다.

수십년전에는 직접 JDBC에 데이터를 넣고 관리했어야 했는데 그땐 중복이 될 때도 많고 코드를 하나하나 입력하기 상당히 어려웠습니다.

그러나 이후 SQL이 등장하여 중복에 대한 것들을 비교적 쉽게 막을 수 있었고 요즘은 더 나아가서 JPA가 등장하여 삭제, 조회, 등록 등의 쿼리를 직접 다루는 기술이 등장하게 됩니다.

JPA라는 기술을 쓰면 객체를 쿼리 없이 DB에 저장하고 관리할 수 있습니다.

JPA도 스프링만큼 상당히 오래된 기술이지만 스프링에서 JPA를 굉장히 편리하게 쓸 수 있도록 맞추어서 등장한 기술이 등장하는데 이를 스프링 데이터 JPA라고 합니다.

실무에선 DB를 쓰는 회사가 정말 다양하기 때문에 아주 다양한 방식으로 데이터를 저장해보고 관리해보도록 하겠습니다.

 

그래서 우선 H2데이터베이스를 설치할 예정입니다.

실무에선 DB를 쓸 때 MySQL이나 Oracle을 쓰지만 특히 MySql계열의 DB를 많이 씁니다.

H2를 써보는 이유는 교육용에도 좋고 굉장히 가벼우며 웹에 알맞춤이기 때문에 그렇습니다.

저는 1.4.200 버전으로 받았습니다. 

c드라이브에서 C:\Program Files (x86)\H2\bin

여기로 들어가시면 windows는 h2.bat을 실행하여 주시고 그 외에는 h2.sh를 실행합니다.

아마 실행하면

이런 화면이 뜰거에요.

처음에는 DB 파일을 만들어야 합니다.

그래서 JDBC URL은 test라는 파일을 의미하는데 따로 지정하여 해도 되지만 default로 일단 진행해보겠습니다.

만약 이대로 연결을 누르면

이렇게 뜹니다.

그러나 제일 처음에 이렇게 접근하고 난 뒤 이후부터 파일로 또 접근하게 되면 동시에 애플리케이션과 콘솔이 충돌이 날 수 있습니다. 

그러므로 이후부터 jdbc:h2:tcp://localhost/~/test를 JDBC URL에 작성하여 들어갑니다.

이렇게 하면 이후부터 파일로 직접 접근하는 것이 아니라 톰캣을 통해서 접근할 수 있습니다.

자 들어왔으면 제일 먼저 테이블을 만들어야 합니다.

이렇게 입력해줍니다.

create table member
(
id bigint generated by default as identity,
name varchar(255),
primary key(id)
);

이러고 Ctrl + 엔터 하시면 만들어집니다.

자바에서는 Long이지만 여기선 bigint라고 쓰이기 때문에 id타입을 bigint라고 지정합니다.

그리고 generated by default as identity라고 입력하면 null이라고 입력해도 자동으로 db에서 채워줍니다.

name의 크기는 255로 지정하고 P.K는 id로 지정합니다. (main key)

자 그럼 데이터를 삽입해보겠습니다.

insert into member(name) values ('spring');

이렇게 입력하시면 name에 spring이라는 값이 삽입됩니다.

그럼 정상적으로 삽입되었는지 확인을 해봐야겠죠?

그러므로

이렇게 입력하고 실행하셔도 되고 아니면 다 지운뒤 제일 왼쪽에 MEMBER를 클릭하고 실행해보면 아래에 테이블이 만들어진 것을 확인할 수 있습니다.

id는 자동으로 들어가있네요.

원래 id를 따로 어떻게 넣겠다 이렇게 설정한게 아니라 generated by default ~ 이렇게 입력했기 때문에 기본값인 1부터 증가하여 오름차순으로 차곡차곡 입력될 것입니다.

만약 데이터 양이 많아지게 되면 id를 단순히 오름차순으로 관리할 수 없기 때문에 (pk이므로) 해시코드로 난수를 만들어서 관리하는 것이 실무에선 일반적입니다.

우리가 이 MemoryMemberRepository에서도 증가하는 오름차순으로 입력되게끔 저장하여 저번 포스팅에서 등록 버튼을 누를 때마다 1씩 증가하여 id가 출력되었던 것도

이걸 보면 setId를 증가하여 담고 있기 때문에 그렇습니다.

이런식으로 해서 DB를 아주 얕지만 간단하게 훑어보았습니다.

다음 시간엔 애플리케이션에서 직접 데이터를 넣어보고 빼는, 실무에서 자주 사용하는 방법을 알아보겠습니다.

감사합니다.

728x90
반응형
Comments