저번 시간에는 잘 모르지만 설치하고 "Hello World"을 나타내봤는데 이번는 데이터베이스를 연결해보겠습니다.
※ DB ? 란 뭘까요????
라고 되어있는데 저희는 개발만 집중하며 공부하니 일단, 데이터를 저장하고 필요할때 사용하는 곳
이라고 알고 진행하고 나중에 천천히 심화 과정 지켜보겠습니다.
저번에 스프링과 자바를 설치하였던것처럼 DB를 설치해 보겠습니다.
제가 알고 있는 DB는 Oracle, MySql, MariaDB, SQL Server, DB2, SYSBASE, 큐브리드(?), MongoDB, Redis, sqlLite .... 되게 많죠?
저는 한국(솔루션 회사)에서 제일 많이 쓰고 있는 Oracle 대신 Mysql 로 사용할것입니다. (둘이 문법차이가 조금 씩 차이가 나니깐 조심해 주세요)
이제 실전으로 넘어가 Mysql 를 설치하도록 하겠습니다.
https://dev.mysql.com/downloads/mysql/
MySQL :: Download MySQL Community Server
Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat Enterprise Linux / Oracle Linux Fedora Linux - Generic Oracle Solaris macOS FreeBSD Source Code Select OS Version: All Window
dev.mysql.com
윈도우는 윈도우버전으로 MAC을 사용하면 MAC으로 설치해주세요(Mac은 나중에 DB내용을 확인을 도와주는 툴이있는데 그거는 안깔려 있어요(Workbench))
모두 NEXT 버튼을 눌러주시고요~
여기서가 제일 중요합니다. root 라는 관리자 비밀번호를 정하는대 이거는 꼭 기억해야합니다.
저는 0000 이나 1111, 1234 까먹더라도 알수있는 번호로 추천드릴께요 아직 저희가 연습중이고 누가 해킹을 해도 가져갈 데이터가 없기 떄문에..
나머지는 Next버튼을 눌러 진행해 주시면 되겠습니다.
설치후 잘 되었는지 확인해볼까요~
mysql -u root -p
로 치게 되면 위 화면같이 뜨는데 비밀번호를 아까 기억하라고 했던 비밀번호를 치면 되는데 비밀번호를 쳐도 뭐가 안뜰꺼예요 걱정하지 말고 그대로 치면 됩니다~
맨 밑에 mysql > 이런식으로 나오면 mysql 에 연결이 잘된것입니다.
※ 맥은 시작 전에
mysql.server start
mysql server을 실행 시켜주셔야 작동이 됩니다.
그리고
CREATE SCHEMA TEST;
로 TEST 라는 스키마를 만들어 줍니다.
이제 스프링으로 넘어가서
120 줄 부터 몇개 추가하였습니다.
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.2</version>
</dependency>
https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.19
Maven Repository: mysql » mysql-connector-java » 8.0.19
JDBC Type 4 driver for MySQL mysql mysql-connector-java 8.0.19 // https://mvnrepository.com/artifact/mysql/mysql-connector-java compile group: 'mysql', name: 'mysql-connector-java', version: '8.0.19' // https://mvnrepository.com/artifact/mysql/mysql-connec
mvnrepository.com
https://mvnrepository.com/artifact/com.zaxxer/HikariCP/3.4.2
Maven Repository: com.zaxxer » HikariCP » 3.4.2
mvnrepository.com
밑에 maven에 을 붙여 놓기를 하는 방식도 추천해 드리겠습니다.
저장버튼을 누르면 관련 라이브러리르 저장하는라 밑에 무언가 실행되는 표시가 뜰것입니다.
그리고
root-context.xml 라는 파일에 디비 연결을 위한 설정을 해줍니다.
<!-- Root Context: defines shared resources visible to all other web components -->
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8&serverTimezone=UTC" />
<property name="username" value="root" />
<property name="password" value="0000" />
</bean>
<!-- 커넥션폴 설정 -->
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource">
<constructor-arg ref="hikariConfig" />
</bean>
<!-- 베이스가 되는 패키지 이름 -->
<context:component-scan base-package="com.spring.example"></context:component-scan>
를 추가 하고
source 말고 Namespaces를 눌러 context를 체크해줍니다.
url 에
jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8&serverTimezone=UTC
url을 보면 jdbc:mysql://127.0.0.1:3306/test
만 필요하지만 인코딩 (한글때문에) 그리고 서버타임을 UTC로 설정해줍니다.
jdbc 는 자바와 디비를 연결을 해서 필요하고 127.0.0.1은 주소 localhost랑 같은 의미 입니다.
3306는 포트 번호입니다. test는 위에 만들었던 스키마로 이동을 합니다.
저번 시간처럼 Hello World 가 뜨면 DB랑 잘 연결이 된것입니다.
※ 원래는 myslq-connect 라는 라이브러리만 있어도 되지만 쓸때마다 연결하고 연결 해제를 해야하는데 계속 그런 불 필요한 시간을 줄이기 위해 Hikari 라는 커넥션폴 라이브러리를 사용했습니다.
커넥션 폴도 Hikari 말고 apache같은 것도 있으니 나중에 천천히 공부해요~
name="driverClassName" value="com.mysql.jdbc.Driver" // Driver는 DB 마다 다릅니다 그래서 쓸때마다 네이버나 구글에 검색해서 알아서 사용합니다.
<property name="username" value="root" />
<property name="password" value="0000" />
username 은 root (관리자) 로 사용했지만 나중에는 유저를 만들어 사용하도록 해요~ (보안에 위험하고 권한이라는걸 다 줘서 사용하기 때문에 위험해요) 저희는 연습중이니깐 root로 사용하겠습니다.
비밀번호는 처음에 mysql 을 설치할때 입력했던걸로 사용합니다.
그리고 우리는 왜 root-context.xml 를 편집했을까요?
web.xml 를 보게 되면 7 ~ 10 번줄에 보면 root-context.xml이 써져 있습니다.
서버가 켜졌을때 사용할 xml를 지정하여 저희는 root-context.xml를 편집하여 연결하였습니다.
밑에도 servelt-context.xml도 있는데 저거는 root-context.xml 는 DB연결에 사용하고 저거는 라이브러리에 필요한 설정들을 저장할때 쓸것입니다.
root-context.xml에 다 쓸수 있지만 소스가 길어지면 다른 분이 보면 보기도 어렵고 저희도 찾기 힘들어져서 따로따로 설정하도록 하겠습니다.
'프로그래밍 > 스프링(spring)' 카테고리의 다른 글
[스프링/spring] 스프링 시큐리티 (spring security) - DB 사용안함 (0) | 2020.04.12 |
---|---|
[스프링/spring] 스프링 로그인 기능 만들기(DB 사용) (10) | 2020.04.12 |
[스프링/java] 스프링 메인화면 만들어 보기 (2) | 2020.04.12 |
[스프링/spring] 스프링 첫 프로젝트 만들기 (0) | 2020.04.12 |
[스프링/spring] 스프링(spring framework) 설치 (0) | 2020.04.11 |