spring配置ibatis的jdbc方式和proxool、c3p0连接池方式

spring配置ibatis的jdbc方式和proxool、c3p0连接池方式

Posted on 2009-07-01 16:51 landor 阅读(3221) 评论(1)   编辑   收藏 所属分类: ibatis <!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"> <rdf:Description rdf:about="http://www.blogjava.net/landor2004/archive/2009/07/01/284978.html" dc:identifier="http://www.blogjava.net/landor2004/archive/2009/07/01/284978.html" dc:title="spring配置ibatis的jdbc方式和proxool、c3p0连接池方式" trackback:ping="http://www.blogjava.net/landor2004/services/trackbacks/284978.aspx" /> </rdf:RDF> -->
spring配置ibatis的jdbc方式和proxool连接池方式,以sqlserver2005为例,驱动为sqljdbc.jar
jdbc.properties中内容如下
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> jdbc . driverClassName = com . microsoft . sqlserver . jdbc . SQLServerDriver
jdbc
. url = jdbc \: sqlserver \:// localhost \: 1433 ; DatabaseName \= IBATIS
jdbc
. username = sa
jdbc
. password = 123456
1 直接用jdbc方式(这种方式适合开发阶段,发布的程序强烈要求用连接池),代码如下,这个都知道,没什么可说的
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> <? xml version="1.0" encoding="UTF-8" ?>
< beans  xmlns ="http://www.springframework.org/schema/beans"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop
="http://www.springframework.org/schema/aop"
    xmlns:context
="http://www.springframework.org/schema/context"
    xmlns:tx
="http://www.springframework.org/schema/tx"
    xsi:schemaLocation
="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"
>
    
    
< context:component-scan  base-package ="com.mydomain" >
        
< context:include-filter  type ="aspectj"  expression ="com.mydomain.spring..*" />
    
</ context:component-scan >
    
< context:property-placeholder  location ="classpath:jdbc.properties"   />
    
< bean  id ="dataSource"  
        class
="org.apache.commons.dbcp.BasicDataSource"
        destroy-method
="close" >
        
< property  name ="driverClassName"  value ="${jdbc.driverClassName}"   />
        
< property  name ="url"  value ="${jdbc.url}"   />
        
< property  name ="username"  value ="${jdbc.username}"   />
        
< property  name ="password"  value ="${jdbc.password}"   />
    
</ bean >

    
< bean  id ="sqlMapClient"  class ="org.springframework.orm.ibatis.SqlMapClientFactoryBean" >
        
< property  name ="configLocation"  value ="classpath:com/mydomain/data/SqlMapConfig.xml" />
        
< property  name ="dataSource"  ref ="dataSource" />
    
</ bean >
    
<!-- 事务管理直接用的DataSourceTransactionManager -->
    
< bean  id ="txManager"  class ="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
        
< property  name ="dataSource"  ref ="dataSource" />
    
</ bean >
    
< aop:config >
        
< aop:pointcut  id ="baseServiceMethods"
            expression
="execution(* com.mydomain.spring.*.*(..))"   />
        
< aop:advisor  advice-ref ="txAdvice"
            pointcut-ref
="baseServiceMethods"   />
    
</ aop:config >
    
< aop:aspectj-autoproxy  />
    
< tx:advice  id ="txAdvice"  transaction-manager ="txManager" >
        
< tx:attributes >
            
< tx:method  name ="select*"  read-only ="true"  propagation ="REQUIRED" />
            
< tx:method  name ="find*"  read-only ="true"   propagation ="REQUIRED" />
            
< tx:method  name ="save*"   propagation ="REQUIRED"  isolation ="REPEATABLE_READ" />
            
< tx:method  name ="update*"   propagation ="REQUIRED"  isolation ="REPEATABLE_READ" />
            
< tx:method  name ="add*"   propagation ="REQUIRED"  isolation ="REPEATABLE_READ"   />
            
< tx:method  name ="delete*"   propagation ="REQUIRED"  isolation ="REPEATABLE_READ" />
        
</ tx:attributes >
    
</ tx:advice >
</ beans >
SqlMapConfig.xml内容如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> <! DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
    "http://www.ibatis.com/dtd/sql-map-config-2.dtd"
>

< sqlMapConfig >
  
< sqlMap  resource ="com/mydomain/data/Account.xml" />
  
</ sqlMapConfig >
2 用proxool连接池方式,只有datasource发生变化,其他的无变动
  需要加入proxool.jar
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->      < bean  id ="dataSource"  class ="org.logicalcobwebs.proxool.ProxoolDataSource"  destroy-method ="close" >
        
< property  name ="alias"  value ="test" ></ property >
        
< property  name ="delegateProperties" >
            
< value > user=${jdbc.username},password=${jdbc.password} </ value >
        
</ property >
        
< property  name ="user"  value ="${jdbc.username}" />
        
< property  name ="password"  value ="${jdbc.password}" />
        
< property  name ="driver"  value ="${jdbc.driverClassName}" />
        
< property  name ="driverUrl"  value ="${jdbc.url}" />
        
< property  name ="houseKeepingTestSql"  value ="select CURRENT_DATE" ></ property >
        <!--此处继续增加proxool属性,详细见proxool文档-->
    
</ bean >
此处说明一下:属性中的user和password不起任何作用,需要用delegateProperties方式写一下,否则会报错误,如下
    org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user ''. The user is not associated with a trusted SQL Server connection.
但是user和password还不能被去掉。

除了上面的用delegateProperties之外,还可以将用户名和密码直接写在url后面。

proxool属性的说明,在这里写的比较详细
http://www.cnblogs.com/wllyy189/archive/2008/10/15/1311560.html
3 c3p0方式
  需要加入c3p0.jar
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->      < bean  id ="dataSource"  class ="com.mchange.v2.c3p0.ComboPooledDataSource"  destroy-method ="close" >
        
< property  name ="driverClass" >
                
< value > ${jdbc.driverClassName} </ value >
            
</ property >
            
< property  name ="jdbcUrl" >
                
< value > ${jdbc.url} </ value >
            
</ property >
            
< property  name ="user" >
                
< value > ${jdbc.username} </ value >
            
</ property >
            
< property  name ="password" >
                
< value > ${jdbc.password} </ value >
            
</ property >
            <!--此处继续增加c3p0 属性-->
     </ bean >
关于c3p0的属性说明请参见:
http://www.blogjava.net/Alpha/archive/2009/03/29/262789.html

猜你喜欢

转载自wjjbfq.iteye.com/blog/1594586
今日推荐