Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 333|回复: 0

[Java框架学习]Spring中的持久层

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-11-6 00:00:58 | 显示全部楼层 |阅读模式
    一、 二、 三、 四、 五、 六、 七、 八、 九、 十、 十一、 十二、 十三、 十四、 十五、 十六、 十七、 十八、 十九、 二十、    

    有了这样的一个SessionFactory代理类之后,在你工程中原来的Hiberante-cfg.xml文件就可以删除了。所有的事情都让Spring管理起来了。


      


    Spring管理HibernateDAO


    数据访问对像DAO用来完成对数据的操作,它需要和底层的数据进行通信。而SessionFacory是底层数据访的一个管理对像,所以DAO应当依赖与SessionFactory。而此时的SessionFacrory已定让Spring管理起来,所以你的DAO应当依赖与Spring所提供的SessionFacory而不是hiberante本身的SessionFacory。
       

    依据Spring的概念,SessionFactory是可以注入到DAO中的。所以在DAO中不要通过Spring上下文对像Context来得到SessionFacory。






    你的DAO除了要关注SessionFacory还应做什么事情呢?----具体的数据操作方法如:add,delete,update,find等等。


    你在编写这些方法的时候是如何做的呢?是不是在每一个方法中都要处理异常,关注事务等内容呢?有没有更好的方法呢?正如你想像的那样,spring对与hiberante也提供了模板支持。
    org.springframework.orm.hibernate3.HibernateTemplate
    ,你可以使用模板来简化你的开发过程。这样你的开发过程将变得非常的简单。


          

         可能你看到这里之后,你马上会问那么模板我该如何使用呢?我怎么样把它应用到我的工程中呢?不要着急,等一等,Spring并不推荐你直接配置和使用模板,它提供了一个对模板的封装类。


    org.springframework.orm.hibernate3.support. HibernateDaoSupport。你的DAO只需要继承它就OK了,你现在就可以直接使用HibernateDaoSupport所提供的方法:


    getHibernateTemplate()就直接可以得到一个模板。然后使用模板提供的数据访问方法来操作数据如:


    getHibernateTemplate().save(transientInstance);


    getHibernateTemplate().delete(persistentInstance);


    getHibernateTemplate().get("com.xaccp.database.dao
    .BrowRecoder"
    , id)



    等等方法来操作数据。


    你的
    DAO
    类可能如下:
       

    DAO要与数据库进行通信,那么它所使用的SessionFocatroy该怎么处理呢?其实可以通过Spring的配置文件,给DAO注入一个SessionFacotry如下:





       
      
      
    Spring管理Hibernate事务
           Spring中对Hiberante的事务管理与前面所提到的JDBC的事务管理是一样的。只不过如前面提到的,Spring对Hibearnte提供了一个专门的事务管理者:
      org.springframework.orm.hibernate3.HibernateTransactionManager
      此处示例声名式的自动代理方法对Service的事务进行管理
      配置事务管理者:
       
      
         
      
       创建事务切面:
       
      
       w
       
      
       
       
      
       
       
      
         
       
       
    依赖关系

       
       
        此时应用程序的依赖关系如下图所示:
       
       
       
       
       
      

       
      
       n         实现业务接口
       
      
       n         由Spring注入所需的DAO
       
      
       n         由Spring给业务方法切入事务
       
      
       DAO类:
       
      
              继承
       HibernateDaoSupport而
       HibernateDaoSupport
       又依赖
       HibernateTemplate
       ,而
       
      
       HibernateTemplate
       
       依赖与
       SessionFacory
       
       HibernateDaoSupport
       和
       HibernateTemplate
       
       Spring
       管理。
       
      
       所以对与
       DAO
       类,只需要通过
       Spring
       的配置文件注入
       SessionFactory
       即可。
       
      
       HibernateTransactionManager:
       
      
              管理事务,依
       赖
       SessionFacory
       ,所以需要
       Spring
       注入
       SessionFacotry
       
      
       SessionFacory
       
      
          
       赖与数据源,所以需要通过
       Spring
       注入
       DataSource
       
      




      
      
       
       

         
       

         
       
      
    复制代码
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-25 11:24 , Processed in 0.370386 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表