Back-End/Spring

[Spring] 커넥션 풀(Connection Pool)

찐코딩 2021. 12. 16. 16:01

* 커넥션 풀(Connection Pool)
-JSP에서 커넥션풀을 이용하여 작업을 진행해 보았음
 하지만 스프링에서는 커넥션풀을 직접적으로 제공해주고 있지 않음
 대신 c3p0과 같은 커넥션풀 라이브러리를 이용해서 커넥션 풀을 지원하는 DataSource를 설정할 수 있음
 
* 스프링에서 커넥션풀 설정하는 방법
-pom.xml 파일에 c3p0 라이브러리를 추가해준다.


-기존에 dataSource에 ComboPooledDataSource 객체를 설정을 한다.
-ComboPooledDataSource 클래스의 주요 프로퍼티(속성)
 *initialPoolSize : 초기의 커넥션 풀의 크기 = 기본값은 3.
 *maxPoolSize : 초기의 커넥션 풀의 최대 크기 = 기본값은 15.
 *minPoolSize : 초기의 커넥션 풀의 최소 크기 = 기본값은 3.

 

1. https://mvnrepository.com/artifact/com.mchange/c3p0/0.9.5.2

 

2.

3. pom.xml에 라이브러리 추가

 

4. root-context.xml 설정

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<!-- Root Context: defines shared resources visible to all other web components -->
	
	<!-- 스프링과 관련된 설정 파일을 설정하는 공간 : DB 연동과 관련된 설정 공간 -->
	
	<!-- 1. c3p0커넥션풀 DataSource 클래스 설정 -->
	<bean name="dataSource"
		class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
		<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:XE" />
		<property name="user" value="web" />
		<property name="password" value="1234" />
		<property name="initialPoolSize" value="10"/>	<!-- 초기 풀 사이즈 -->
	
	</bean>
	
	<!-- 2. Spring JDBCTemplate 클래스 설정 -->
	<bean name="template"
	   class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource" />
	</bean>
		
</beans>

 

편의상 

HomeController에서 return "home" > "main"으로 변경

(그럼 실행 시 자동으로 main.jsp로 열람하게 된다.

 

 

main.jsp 한글 깨짐 방지

<%@ page session="false" pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" pageEncoding="UTF-8"%>

<html>
<head>
	<title>Home</title>
</head>
<body>
<div align="center">
		<hr width="50%" color="gray">
			<h3>Member10 테이블 메인 페이지</h3>
		<hr width="50%" color="gray">
		<br> <br>
		<a href="<%=request.getContextPath() %>/member_list.do">[전체 목록]</a>
	</div>
</body>
</html>