社区
Java EE
帖子详情
是不是hibernate在实际使用的时候,还要被dao封装一层?
vcshcn
2004-12-08 04:49:04
rt
...全文
180
6
打赏
收藏
是不是hibernate在实际使用的时候,还要被dao封装一层?
rt
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cnham
2004-12-10
打赏
举报
回复
同意:cwx714(小螃蟹)
强!
紫翎观星
2004-12-09
打赏
举报
回复
简单的来说,Hibernate的性能比一个普通的Java程序员写的JDBC代码性能高非常非常多。原因是因为Hibernate本质上还是包装了JDBC来进行数据库操作的,由于Hibernate在调用JBDC上面是非常非常绞尽脑汁的优化JDBC调用,并且尽可能的使用最优化的,最高效的JDBC调用,所以性能相当令人满意。
简单来说吧,对于insert操作,普通JDBC程序员这样来写:
pstmt = conn.prepareStatement("insert into table1 values(?,?)");
for (int i=0; i< names.length; i++) {
pstmt.setString(1,names);
pstmt.setString(2,pass);
pstmt.executeUpdate();
}
如果批量插入n条记录的话,那么就是n次向数据库发送SQL语句。而Hibernate则是采用了JDBC2.0的batch功能。
for (int i=0; i< names.length; i++) {
pstmt.setString(1,names);
pstmt.setString(2,pass);
pstmt.addBatch();
}
pstmt.executeBatch();
只是1次向数据库发送SQL,性能高下判若分明。Update操作类似。
select操作,可以使用JCS缓冲查询结果,重复查询比JDBC肯定要快很多,分页操作可以使用数据库的分页sql,或者使用JDBC2.0的scroll result。
另外Hibernate总是尽量延迟向数据发送SQL,它会先把SQL语句缓冲在Session的缓冲区里面,最后在flush的时候一次性的向数据库发送。
总体来说,当你使用Hibernate的时候,相当于有一个JDBC高手来帮你优化JDBC调用,那点封装了一层的损失可以忽略不计。
如果你非要认为Hibernate封装了JDBC会损失性能,那么我问你,Java设计的目标是组件可复用,这些不全都是封装吗?难到你调用组件都损失性能了,如果是那样,还不如不要写什么组件,全部都重新写原始的实现代码呢!
不过如果一个真正的JDBC高手,完全自己优化JDBC代码写DAO实现,我相信会比Hibernate性能高一些,但是Hibernate已经够优化了,你能够做的是非常有限的。就好比用C语言写的程序,虽然比汇编语言差一点,但是差的非常有限。Hibernate vs JDBC就相当于C vs Assemble,除非特殊需要,Hibernate已经足够好了。
禽兽v5
2004-12-09
打赏
举报
回复
随便了。这个看需求而定。
bluemeteor
2004-12-08
打赏
举报
回复
Hibernate只是对JDBC的轻量级封装...所以如果要写个健壮的系统的话...DAO是必不可少的
vcshcn
2004-12-08
打赏
举报
回复
我觉得hibernate只是替代了jdbc的功能,而没有实现类似dao的功能
我的理解对吗?
niyboy
2004-12-08
打赏
举报
回复
呵呵;可以
SpringSide的
Hibernate
封装
第
一层
:
Hibernate
Generic
Dao
,基于spring的
Hibernate
Dao
Support,但加入了分页函数与各种Finder函数,并
使用
泛型避免了返回值强制类型转换。 第二层:
Hibernate
Entity
Dao
,基于
Hibernate
Generic
Dao
,用泛型声明
Dao
...
Hibernate
入门.docx
既然
Hibernate
是关于Java对象和关系数据库之间的联系的话,也就是 我们MVC中的数据持久层- >在编写程序中的
DAO
层... 首先,我们来回顾一下我们在
DAO
层写程序的历程吧: 1.在
DAO
层操作XML,将数据
封装
到XML文件上,...
全面掌握
Hibernate
框架技术
Hibernate
简介、Session API、对象的状态 查询操作(主键查询、HQL查询、Criteria查询、SQL查询、命名查询、doWork) 关联关系:多对一、一对多、多对多、一对一 组件映射、继承映射、缓存、JPA 反向工程、
封装
...
基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)
在数据库处理方面,不需要在数据层借助存储过程及数据库服务器端函数
封装
过多的业务逻辑,因此数据库系统采用相对精巧的MySQL[6]。 该在线博客系统服务器端如果需要布置到其他主机上,则该主机必备条件如下: 1. ...
Spring+3.x企业应用开发实战光盘源码(全)
第8章:介绍了Spring所提供的
DAO
封装
层,这包括Spring
DAO
的异常体系、数据访问模板等内容。 第9章:介绍了Spring事务管理的工作机制,通过XML、注解等方式进行事务管理配置,同时还讲解了JTA事务配置知识。 ...
Java EE
67,513
社区成员
225,879
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章