DAO是什么概念,熟悉Hibernate+Spring的请进

来自:    更新日期:早些时候
Hibernate和spring整合后为什么要用DAO接口~

第一点,公司开发在设计阶段要将任务模块化,然后分给不同的人甚至小组并行开发。必须设定好各个模块的接口(当然包括Dao接口),通过接口规范方法名和参数,不然将来集成的时候每个人写的规范不一样麻烦就大了。
举个例子 在你没有写好DAO层的代码的时候,只要别人知道你的接口,就知道要怎么与你的DAO层进行通信了。

第二点,使用接口能够隐藏实现过程,方便程序维护和升级。举个例子 就DAO层的接口吧。StudentDAO studentDAO=null;然后我可以通过spring注入一个OrcStudentDao();//对Orcal数据库的CRUD操作。当我的公司再开发一个项目和这个很类似,但是要使用Mysql数据库的时候只要实现这个Dao接口,然后通过spring注入一个MqlStudentDao();就行了,其他所有调用到这的代码通通不用改。不然就吐血去吧。

最重要的当然是第三点了 ,前两点我想光吐血还可以--毕竟有的人血厚么,这个就是半人马酋长来了也得抓狂-----
----第三点,spirng的aop当然是spring的核心之一=》事物管理又是aop的核心功能之一=》spring的aop实际上就是特殊的拦截器=》spring的拦截器实际上有两种底层的实现方式,默认的是使用jdk的动态代理=》而jdk的动态代理要求必实现类必须实现接口。好了自己往回反着推,我直接说结果吧,在你关心的这块就是Hibernate和Spring整合的时候无法使用spring 的事务管理(这简直是灾难,因为事物有八种传播特性,事物基本上都发生在Dao层,都写在代码里零零散散无法维护不说,极容易因为失误出现事物管理问题,比如数据库连接没有关闭啦,数据没有提交到数据库啦,脏数据啦... 各种灵异的问题)。好吧我承认,前面的是吓唬你的,spring的AOP有两种底层的实现,一种是刚才说的默认情况下是使用JDK的动态代理,另一种需要强制的使用cglib的动态代理,但是要引入cglib的jar库,cglib是通过继承实现动态代理的,不需要接口,但是使用cglib是不推荐的方法,这个只是用来解决遗留问题的。


除次之外随着你学习的深入,将精力从编码转向到设计的时候,你就知道接口,抽象,封装,继承... 这些的好处了,这不是一言能尽的事。
以上是个人的理解不是标准答案

NewsService.java (Hibernate用于持久化)
{
构造session工厂略
public void addNews(NewsVO news){
try{
session.save(news);//保存,事务开始和提交略
}
}
}
就是DAO层,你的DAO层是用hibernate实现的

你的这部分:
NewsService.java (Hibernate用于持久化)
{
构造session工厂略
public void addNews(NewsVO news){
try{
session.save(news);//保存,事务开始和提交略
}
}
}
就是DAO层,你的DAO层是用hibernate实现的

首先先讲个概念 orm (object/relation mapping)对象关系模型 在数据库中 所有的 数据都是关系型的 怎样映射成对象 也就是 hibernate 做的一部分事
DAO的概念 是Data Access Objects 数据访问对象
NewsVO.java 这是描述一个对象的 类 他是对象
NewsAction.java 这是mvc 模型中的 逻辑业务层
NewsService.java 这个只是负责数据存储的 他集合hibernate 来将数据存储到数据库中 其中 hibernate中 NewsVO.hbm.xml 文件是将 数据库中的 关系模型映射成 对象模型的 也就是前面的 orm
Spring 他有很多功能 我不明白你的意思 他有很多功能 依赖注入啊 控制翻转啊 一般整合 hibernate 就只是让Spring来管理所有的DAO中数据源的 依赖注入 还有很多 具体看实际应用情况

kkk


DAO是什么概念,熟悉Hibernate+Spring的请进视频

相关评论:
  • 13032897122JDBC Driver class not found: com.microsoft.sqlserver.jdbc.SQLS...
    叶琳可你把hibernate所需要的jar包导入到你这个工程了吗?我感觉一种可能就是jar没有导入。2。就是对hibernate的配置问题。

  • 13032897122Error creating bean with name 'jobCheckLost'defined in class...
    叶琳可异常:org.apache.commons.collections.SetUtils.orderedSet 看来是创建jobCheckLost的时候缺个collections的公用包 导一个进去就行了 --- 缺少collections包 在这个地址下载:http:\/\/commons.apache.org\/downloads\/download_collections.cgi

  • 13032897122spring hibernate启动报错 注解类加载失败,是不是jar包有问题啊_百度知...
    叶琳可Error creating bean with name 'userDaoImpl': Injection of resource dependencies failed;Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory';Hibernate的 'sessionFactory' 有问题。。。

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网