일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 파일 업로드
- oracle 설치방법
- 정규표현식
- 스프링 쇼핑몰
- spring 프로젝트
- 스프링 프로젝트
- 스프링 포트폴리오
- BCrypt 적용
- 로그인 기능
- arraylist
- 스프링 이미지
- 삭제 구현
- 스프링 메일 전송
- 스프링 게시판
- 로그아웃 기능 구현
- 스프링 업로드
- 인증번호 전송
- 스프링 파일 삭제
- ResponseEntity
- 쇼핑몰 프로젝트
- 스프링 HikariCP
- 이미지 출력
- 쇼핑몰 포트폴리오
- 스프링 프로젝트 설정
- 회원가입 기능
- Bcrypt
- 스프링 프로젝트 기본 설정
- spring 쇼핑몰
- 스프링 쇼핑몰 프로젝트
- 스프링 게시판 구현
- Today
- Total
Kim VamPa
[STS][스프링 게시판][0] MVC 프로젝트 생성 및 기본설정 - 2 본문
순서
7. JDBC 연결 및 테스트
7.1 Oracle
7.2 MySQL
7.3 JDBC 테스트
8. 커넥션 풀(HikariCP) 설정 및 테스트
9. MyBatis 라이브러리 추가 및 SQLSessionFactory 설정
10. Log4jdbc-log4j2 라이브러리 추가 및 설정
7. JDBC 연결 및 테스트
"JDBC"와 다음 순서에서 작업할 "커넥션 풀"에 대한 소개는 아래의 포스팅을 참고해주세요.
[Spring] JDBC란? Connection pool이란?
7.1 Oracle
[pom.xml] 파일에 Ojdbc 라이브러리를 추가합니다. 자신이 JDK 8 혹은 9를 사용 중일 경우 Ojdbc8 라이브러리를, JDK10 혹은 11을 사용중일 경우 Ojdbc10 라이브러리를 추가해주어야 합니다.
[pom.xml]에 Ojdbc 라이브러리를 추가하는 방식이 아닌 직접 라이브러리를 다운로드하여 추가하는 방식은 아래의 포스팅을 참고하시면 됩니다.
[Spring][03-01]JDBC 연결 테스트 (Oracle DB 연결)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<!-- JDK 10, 11 사용 중일 경우 -->
<!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc10 -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc10</artifactId>
<version>19.8.0.0</version>
</dependency>
<!-- JDK 8, 9 사용 중일 경우 -->
<!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8 -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.7.0.0</version>
</dependency>
|
7.2 MySQL
Maven Repository 사이트에서 자신이 설치한 MySQL 버전과 일치하는 JDBC 라이브러리를 [pom.xml]에 추가하시면 됩니다.(저의 MySQL 8.0.23 이기 때문에 8.0.23 라이브러리를 추가하였습니다.)
mvnrepository.com/artifact/mysql/mysql-connector-java
1
2
3
4
5
6
7
8
|
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
|
7.3 JDBC 테스트
추가한 JDBC가 데이터베이스와 연결이 되었는지 확인하기 위해 테스트를 진행합니다. src/test/java 경로에 com.vam.persistence 패키지를 생성하고 JDBCTest.java 클래스를 생성합니다.
해당클래스에 아래의 코드를 추가 한 뒤 Junit 테스트를 진행합니다.
"Database url" 경우 '데이터베이스 url' 키워드 검색을 통해 자신의 데이터베이스 url을 알아내시면 됩니다.
Oracle 데이터베이스 계정을 아직 생성하지 않은 경우 생성 후 해당 계정, 비밀번호를 입력하시면 됩니다. (계정 생성 방법은 [Oracle 기본사용법][01]사용자(USER)생성, 스키마(SCHEMA) 생성 포스팅을 참고하시면 됩니다.)
MySQL 데이터베이스 계정은 초기 설치시에 설정한 계정입니다.
Oracle JDBC 테스트
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
static {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch(Exception e) {
e.printStackTrace();
}
}
@Test
public void testConnection() {
try(Connection con = DriverManager.getConnection(
"Oralce 데이터베이스 url",
"계정명",
"")){
System.out.println(con);
} catch (Exception e) {
fail(e.getMessage());
}
}
|
MySQL JDBC 테스트
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
static {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch(Exception e) {
e.printStackTrace();
}
}
@Test
public void testConnection() {
try(Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/스키마명?serverTimezone=Asia/Seoul",
"계정명",
"1234")){
System.out.println(con);
} catch (Exception e) {
fail(e.getMessage());
}
}
|
8. 커넥션 풀(HikariCP) 설정 및 테스트
라이브러리 추가
커넥션 풀 역할을 하는 라이브러리들 중 HikariCP를 사용하겠습니다. [pom.xml]에 HikariCP 라이브러리를 추가해줍니다. JAVA 8, 9, 10, 11을 사용하는 경우 HikariCP 4.0.2 이상 버전을 사용하시면 됩니다. JAVA 버전에 따른 설치해야 할 HikariCP 버전에 대한 자세한 사항은 다음의 링크를 참고해주세요.
github.com/brettwooldridge/HikariCP
1
2
3
4
5
6
7
8
|
<!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.2</version>
</dependency>
|
DataSource 설정 (root-context.xml)
root-context.xml 파일에 아래의 DataSource 설정 코드를 추가합니다.
Oracle
- HikarCP 공식 홈페이지에서는 [driverClassName]이 "oracle.jdbc.pool.OracleDataSource" 이지만 해당 값으로 실행 시 에러 상황이 났습니다. "oracle.jdbc.driver.OracleDriver" 값을 입력시 정상 진행됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="jdbcUrl" value="jdbc:oracle:thin:@URL주소:1521:시드명"></property>
<!-- Oracle 11g 경우 value="jdbc:oracle:thin:@localhost:1521:XE" -->
<!-- Oracle 19 경우 value="jdbc:oracle:thin:@localhost:1521:orcl" -->
<property name="username" value="계정명"></property>
<!-- Oracle 버전에 따라 계정명에 c##을 붙여주어야 하는 경우가 있습니다. -->
<property name="password" value="비밀번호"></property>
</bean>
<bean id="datasource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig"></constructor-arg>
</bean>
|
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
|
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/스키마명?serverTimezone=Asia/Seoul"></property>
<property name="username" value="계정명"></property>
<property name="password" value="빔리번호"></property>
</bean>
<bean id="datasource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig"></constructor-arg>
</bean>
|
테스트
스프링 빈(Bean)으로 등록된 DataSource를 이용해서 Connection을 제대로 처리할 수 있는지 확인하기 위해 테스트를 진행합니다.
src/test/java 경로에 있는 com.vam.persistence 패키지에 DataSourceTest.java 클래스를 생성합니다. 해당 클래스에 아래의 코드를 작성한 뒤 Junit 테스트를 진행하여 정상적으로 실행되는지 확인합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
public class DataSourceTest {
@Autowired
private DataSource dataSource;
@Test
public void testConnection() {
try(Connection con = dataSource.getConnection();){
System.out.println("con = " + con);
} catch(Exception e) {
e.printStackTrace();
}
}
}
|
9. MyBatis 라이브러리 추가 및 SQLSessionFactory 설정
라이브러리 추가
MyBaits를 사용하기 위해서 mybatis / mybatis-spring / spring-jdbc / spring-tx 4개의 라이브러리가 필요로 합니다. mybatis-spring 은 스프링에서 mybatis를 연동시켜주는 라이브러리입니다. spring-jdbcc, spring-tx는 스프링에서 데이터베이스 처리와 트랜잭션 처리를 하는 라이브러리입니다. mybatis와 무관해 보이지만 추가하지 않는 경우 에러가 발생하기 때문에 추가합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework-version}</version>
</dependency>
|
SQLSessionFactory 설정
SQLSession 객체는 Connection을 생성하거나 원하는 SQL을 전달하고, 결과를 리턴 받도록 해줍니다. 이러한 SQLSession을 만들어내는 객체가 SQLSessionFactory입니다. SQLSessionFactory는 MyBatis-spring 라이브러리 클래스 중 하나입니다. 이 객체를 스프링에서 인식할 수 있도록 root-context.xml 에 빈(Bean)으로 등록합니다. 아래의 코드 작성을 통해서 빈(Bean)으로 등록할 수 있습니다.
1
2
3
4
5
|
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="datasource"></property>
</bean>
|
테스트
등록한 SqlSessionFactory를 이용해서 SqlSession을 정상적으로 사용할 수 있는지 확인하기 위해서 테스트를 하겠습니다. 기존 DataSource를 테스트를 위해 작성한 DataSourceTest.java 클래스를 활용해서 Junit 테스트합니다.
- SqlSessionFactory 객체를 의존성 주입.
- try 파라미터 SqlSession 객체 추가, try 구현부 SqlSession 출력문 코드 추가.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
public class DataSourceTest {
@Autowired
private DataSource dataSource;
@Autowired private
SqlSessionFactory sqlSessionFactory;
@Test
public void testConnection() {
try(
Connection con = dataSource.getConnection();
SqlSession session = sqlSessionFactory.openSession();
){
System.out.println("con = " + con);
System.out.println("session = " + session);
} catch(Exception e) {
e.printStackTrace();
}
}
}
|
10. Log4jdbc-log4j2 라이브러리 추가 및 설정
Log4jdbc-log4j2 라이브러리 추가 및 설정은 아래의 포스팅을 참고해주세요.
[Spring][06] Log4jdbc-log4j2 추가 및 설정방법
REFERENCE
DATE
- 2021.02.15
'스프링 프레임워크 > 게시판 프로젝트' 카테고리의 다른 글
[스프링 게시판][2] 게시판 목록 기능 구현 (11) | 2021.02.19 |
---|---|
[STS][스프링 게시판][1] 게시판 등록 기능 구현 - 2 (18) | 2021.02.17 |
[STS][스프링 게시판][1] 게시판 등록 기능 구현 - 1 (19) | 2021.02.17 |
[STS][스프링 게시판][0] MVC 프로젝트 생성 및 기본설정 - 3 (18) | 2021.02.15 |
[STS][스프링 게시판][0] MVC 프로젝트 생성 및 기본설정 - 1 (12) | 2021.02.15 |