2017-02-21 12 views
0

Я делаю проект среднего размера с весенним jdbc и сервером MsSQL, проект выполняется почти на 50%, теперь, когда каждый запрос делает множество вставок и обновлений специально с теми таблицами, которые содержат большое количество столбцов и больших наборов данных выполняется очень медленно, а иногда и закрытие соединения. Теперь я собираюсь интегрировать C3p0 или аналогичный пул соединений, но я не могу изменить любой код DAO, который я уже сделал. Я реализовал класс DAOHelper с переменной JDBCTemplate и ввел зависимость JDBCTemplate в applicationContext.xml с автоподстановкой DAOClass в классе контроллера , и я распространил этот 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

Просто измените ds bean в вашем config xml со следующим и рассмотрите возможность добавления других свойств c3p0 в соответствии с вашими собственными. убедитесь, что в вашем пути к классам есть c3p0.

<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

Смежные вопросы