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>