[Spring] Connection Pool

2024. 7. 6. 23:11BE/Spring

1. Connecion Pool이란?

 

Connection Pool은 데이터베이스와의 Connection을 미리 생성하고, 이를 Pool에서 관리하는 기술이다.

 

데이터베이스로의 추가 요청이 필요할 때 연결을 재사용할 수 있도록 관리되는 데이터베이스 연결의 캐시이다.

 

Connection Pool이 시작될 때 특정한 수의 물리적 커넥션을 만들며 이는 애플리케이션 실행 중에 커넥션 생성, 해제하는 오버헤드(Overhead)를 줄여준다.

 

또한, 동시에 많은 요청이 들어와도 안정적으로 처리할 수 있게 해준다.

 

 


2. Java에서 Connection Pool 사용하기

 

  • DataSource
    : 애플리케이션이 데이터베이스와 상호작용할 수 있도록 하는 연결을 관리하는 객체다.
    : 애플리케이션은 데이터베이스에 직접 접속하는 대신, 미리 정의된 설정과 연결 풀을 이용하여 효율적으로 데이터베이스 작업을 수행할 수 있다.
  • JNDI
    : Java Naming and Directory Interface
    : 자바 애플리케이션이 네이밍 및 디렉터리 서비스를 이용할 수 있게 해주는 API입니다.
    : 이를 사용하면 애플리케이션은 외부 리소스(예: 데이터베이스, 메시징 시스템, EJB 등)에 대한 참조를 쉽게 관리할 수 있다.
    : 이를 통해 DataSource와 같은 리소스를 설정하면, 애플리케이션은 환경에 구애받지 않고 동일한 이름을 통해 리소스에 접근할 수 있다.

 


가. META-INF/context.xm

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <Resource name="jdbc/company" auth="Container" type="javax.sql.DataSource" 
            maxTotal="100" maxIdle="30" maxWaitMillis="10000" 
            username="company" password="company" driverClassName="com.mysql.cj.jdbc.Driver"     
            url="jdbc:mysql://localhost:3306/companyweb?serverTimezone=UTC&amp;useUniCode=yes&amp;characterEncoding=UTF-8"/> 
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

META-INF/context.xml에 DB 접급을 위한 정보를 추가한다.

 


나. root-context.xml

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:comp/env/jdbc/company"></property>
</bean>

root-context.xml에 datasource bean을 등록한다.

 


'BE > Spring' 카테고리의 다른 글

[MyBatis] 동적 SQL  (0) 2024.07.06
[MyBatis] MyBatis란?  (0) 2024.07.06
[Spring] File Upload & Download  (0) 2024.07.06
[Spring] ControllerAdvice  (0) 2024.07.06
[Spring] Java Config  (0) 2024.07.06