Sring8 DAO

Spring提供的DAO(数据访问对象)支持主要的目的是便于以标准的方式使用不同的数据访问技术, 如JDBC,Hibernate或者JDO等。它不仅可以让你方便地在这些持久化技术间切换, 而且让你在编码的时候不用考虑处理各种技术中特定的异常。

    为了便于以一种一致的方式使用各种数据访问技术,如JDBC、JDO和Hibernate, Spring提供了一套抽象DAO类供你扩展。这些抽象类提供了一些方法,通过它们你可以 获得与你当前使用的数据访问技术相关的数据源和其他配置信息。

    Dao支持类:

    JdbcDaoSupport - JDBC数据访问对象的基类。 需要一个DataSource,同时为子类提供 JdbcTemplate。

数据源的提供方法有:

1:通过代码实现。NEW一个DataSource。

2:透过javax.sql.DataSource接口来注入数据来源,Spring提供了org.springframework.jdbc.datasource.DriverManagerDataSource来取得 DataSource

代码<? xml version = " 1.0 "  encoding = " UTF-8 " ?>  

<! DOCTYPE beans PUBLIC  " -//SPRING/DTD BEAN/EN "   " http://www.springframework.org/dtd/spring-beans.dtd " >  

< beans >  

    
< bean id = " dataSource "   class = " org.springframework.jdbc.datasource.DriverManagerDataSource " >  

        
< property name = " driverClassName " >  

            
< value > com.mysql.jdbc.Driver </ value >  

        
</ property >  

        
< property name = " url " >  

            
< value > jdbc:mysql: // localhost:3306/TestDB</value> 

        
</ property >  

        
< property name = " username " >  

            
< value > caterpillar </ value >  

        
</ property >  

        
< property name = " password " >  

            
< value > 123456 </ value >  

        
</ property >  

    
</ bean >  

                                                                                

    
< bean id = " dataBean "   class = " onlyfun.caterpillar.DataBean " >  

        
< property name = " dataSource " >  

            
< ref bean = " dataSource " />  

        
</ property >  

    
</ bean >  

</ beans >
3:使用(连接池)org.apache.commons.dbcp.BasicDataSource作为注入的 DataSource源,为了使用DBCP的功能,您必须要将commons-dbcp.jar加入CLASSPATH中,另外您还需要commons- pool.jar与commons-collections.jar

代码:<? xml version = " 1.0 "  encoding = " UTF-8 " ?>  

<! DOCTYPE beans PUBLIC  " -//SPRING/DTD BEAN/EN "   " http://www.springframework.org/dtd/spring-beans.dtd " >  

< beans >  

    
< bean id = " dataSource "   class = " org.apache.commons.dbcp.BasicDataSource "  destroy - method = " close " >  

        
< property name = " driverClassName " >  

            
< value > com.mysql.jdbc.Driver </ value >  

        
</ property >  

        
< property name = " url " >  

            
< value > jdbc:mysql: // localhost:3306/TestDB</value> 

        
</ property >  

        
< property name = " username " >  

            
< value > caterpillar </ value >  

        
</ property >  

        
< property name = " password " >  

            
< value > 123456 </ value >  

        
</ property >  

    
</ bean >  

    
< bean id = " dataBean "   class = " onlyfun.caterpillar.DataBean " >  

        
< property name = " dataSource " >  

            
< ref bean = " dataSource " />  

        
</ property >  

    
</ bean >  

</ beans >
4:通过JNDI提供的数据源

代码:<? xml version = " 1.0 "  encoding = " UTF-8 " ?>  

<! DOCTYPE beans PUBLIC  " -//SPRING/DTD BEAN/EN "   " http://www.springframework.org/dtd/spring-beans.dtd " >  

< beans >  

    
< bean id = " dataSource "   class = " org.springframework.indi.JndiObjectFactoryBean " >  

        
< property name = " jndiName " >  

            
< value > jdbc / TestDB </ value >  

        
</ property >  

    
</ bean >  

    
< bean id = " dataBean "   class = " onlyfun.caterpillar.DataBean " >  

        
< property name = " dataSource " >  

            
< ref bean = " dataSource " />  

        
</ property >  

    
</ bean >  

</ beans >
必须加入 spring-context.jar这个类别库

    HibernateDaoSupport - Hibernate数据访问对象的基类。 需要一个SessionFactory,同时为子类提供 HibernateTemplate。也可以选择直接通过 提供一个HibernateTemplate来初始化, 这样就可以重用后者的设置,例如SessionFactory, flush模式,异常翻译器(exception translator)等等。

    JdoDaoSupport - JDO数据访问对象的基类。 需要设置一个PersistenceManagerFactory, 同时为子类提供JdoTemplate。

    JpaDaoSupport - JPA数据访问对象的基类。 需要一个EntityManagerFactory,同时 为子类提供JpaTemplate。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值