摘要: 1.Hibernate中find和iterate的区别?find方法和iterator方法的区别(1) iterator首先会获取符合条件的记录的id,再跟据id在本地缓存中查找数据,查找不到的再在数据库中查找,结果再存在缓存中。N+1条SQL语句。(2) find根据生成的SQL语句,直接访问数据库,查到的数据存在缓存中,一条SQL语句。2. 为什么要用Hibernate框架,它有什么优势?答:至于我们为什么要用Hibernate,就从Hibernate的四个优点来说:首先、Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。其次、Hibernate是 阅读全文
posted @ 2013-11-27 20:46 孙立庆 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 一级缓存Hibernate的一级缓存是由Session提供的,因此它只存在于Session的生命周期中,当程序调用get(),save(),update(),saveorupdate()等方法如session缓存中还不存在相应的对象,Hibernate会把该对象加入到一级缓存中,--Hibernate一级缓存缓存的是对象,注意查询接口Query下的list(),filter(),iterate()时,一级缓存是不起效果的。 1 package com.oracle.dao; 2 3 import java.util.List; 4 5 import org.hibernate.Query;.. 阅读全文
posted @ 2013-11-27 18:25 孙立庆 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2013-11-27 11:31 孙立庆 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 1)persist()方法和save()方法persist()方法是在Hibernate3版本中才出现的,实现了EJB3规范中定义的持久化语义,persist()方法不保证立即为持久化对象的OID赋值,而是有可能在Session清理缓存时才为OID赋值。session.save()方法并不立即执行SQL insert语句,只有当Session清理缓存时,才会执行SQL语句,如果在save()方法后,又修改了持久化对象的属性,清理缓存时会额外执行SQL update语句。(2)load()和get()方法都能根据给定OID从数据库中加载一个持久化对象.当数据库中不存在与OID对应的记录时,loa 阅读全文
posted @ 2013-11-27 10:14 孙立庆 阅读(1123) 评论(0) 推荐(1) 编辑