2017-02-21 9 views
0

스프링 jdbc 및 MsSQL 서버를 사용하는 중간 규모 프로젝트를 수행 중이며, 프로젝트가 거의 50 % 완료되었습니다. 이제는 모든 요청이 삽입 및 업데이트를 수행 할 때 특별히 많은 열과 대형 데이터 세트는 매우 느리게 실행되며 때로는 연결이 닫히는 것을 보여줍니다. 지금 C3p0 또는 유사한 연결 풀링을 통합하려고 생각하지만 이미 완료 한 DAO 코드를 변경할 수 없습니다. 변수를 DAOHelper 클래스로 구현하고 컨트롤러 클래스에서 DAOClass의 autowiring을 사용하여 applicationContext.xml에 JDBCTemplate 종속성을 주입했습니다. , 그리고이 DAOHelper를 모든 DAO 클래스로 확장하고이 jdbcTemplate을 사용하여 JDBC 작업을 수행했습니다.이미 구현 된 Spring Jdbctemplate 프로젝트에 대한 연결 풀 대체

<bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/> 
    <property name="url" value="jdbc:sqlserver://192.168.1.101:1433;databaseName=OrderManager"/> 
    <property name="username" value="sa"/> 
    <property name="password" value="520759"/> 
</bean> 
<bean id="JdbcDataSource" class="org.springframework.jdbc.core.JdbcTemplate"> 
    <property name="dataSource" ref="ds"/> 
</bean> 
<bean id="OrderDAO" class="com.ordermanager.order.dao.OrderDAO" > 
    <property name="jdbcTemplate" ref="JdbcDataSource"/> 
    <property name="transactionManager" ref="transactionManager"/> 
</bean> 




@Controller 
public class OrderController { 

@Autowired 
OrderDAO orderDAO; 

@RequestMapping(value = "/addNewItem", method = RequestMethod.GET) 
public ModelAndView addItem(@RequestParam("ParamData") JSONObject paramJson) { 
    ApplicationContext ctx = new FileSystemXmlApplicationContext(ConstantContainer.Application_Context_File_Path); 
    OrderDAO orderDAO = (OrderDAO) ctx.getBean("OrderDAO"); 
    return new ModelAndView("MakeResponse", "responseValue", orderDAO.addItem(paramJson)); 
} 



public class DAOHelper { 

private JdbcTemplate jdbcTemplate; 
private PlatformTransactionManager transactionManager; 

public PlatformTransactionManager getTransactionManager() { 
    return transactionManager; 
} 

public void setTransactionManager(PlatformTransactionManager txManager) { 
    this.transactionManager = txManager; 
} 

public JdbcTemplate getJdbcTemplate() /*I am using this Method for all JDBC Task*/ { 
    return jdbcTemplate; 
} 

public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { 
    this.jdbcTemplate = jdbcTemplate; 
} 

최소 코드 변경으로 어떻게 C3p0 또는 좋은 연결 풀링 라이브러리를 이미 작성한 코드와 통합 할 수 있습니까?

답변

2

다음과 같이 구성 XML의 ds bean을 변경하고 다른 c3p0 속성을 직접 추가하는 것을 고려하십시오. 클래스 패스에 c3p0 jar 파일이 있는지 확인하십시오.

<bean id="ds" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
     destroy-method="close"> 
     <property name="driverClass" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" /> 
     <property name="jdbcUrl" value="jdbc:sqlserver://192.168.1.101:1433;databaseName=OrderManager" /> 
     <property name="user" value="sa" /> 
     <property name="password" value="520789" /> 
    </bean> 
+0

감사합니다. – Chanky