我觉得hibernate只是替代了jdbc的功能,而没有实现类似dao的功能
我的理解对吗?
我的理解对吗?
解决方案 »
- mina socket。。配置remoteAddress报错。。
- 怎么样尽快精通java框架
- tomcat5.5,oracle10g连接池问题
- 求助阿 org.hibernate.hql.ast.QuerySyntaxException: Unable to locate class [Test]
- Hibernate 二级缓存
- 请教一下关于jdbc
- 急!如何用weblogic配置web服务器?
- 怎么样在webLogic中加入其他api包
- 请教高手:关于抽象类和接口类
- 是因为VAJ烂还是JAVA 本身的问题,请进来看看用VAJ 自动生成的代码
- Struts 中 ApplicationResources.properties问题
- CMP BEAJ简单问题
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已经足够好了。