`
conkeyn
  • 浏览: 1504471 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

hibernate之查询(设置查询提示) (转)

 
阅读更多

转自:http://blog.csdn.net/fhd001/article/details/6272438

 

hibernate之查询(设置查询提示)

----------
1.setFlushMode()

假设你在执行查询之前修改了持久化对象。这些修改只出现在内存中,因此hibernate在执行查询之前,把持久化上下文和所有的变化清除到数据库。这样保证了查询在当前的数据中运行,并保证在查询结果和内存之间不会出现冲突。

这有时候是不现实的,例如,如果你执行一系列包含许多个查询-修改-查询-修改的操作,并且每次查询都获取一个与以前不同的数据集。换句话说,不需要在执行查询之前把修改清除到数据库。

可以在session中,利用setFlushMode()禁用持久化上下文的清除。如例:

session.setFlushMode(FlushMode.COMMIT); 

 

或者,如果你想要只在特定的查询之前禁用清除,可以在Query对象中设置一个FlushMode,如例:

Query q = session.createQuery(queryString).setFlushMode(FlushMode.COMMIT);  

 

hibernate不会在执行这个查询之前清除持久化上下文。

2.setCacheMode()

这是对查询结果的一个细粒度的优化,控制hibernate如何与二级缓存交互。

如例:

session.setCacheMode(CacheMode.IGNORE); 
      或 
      Query q = session.createQuery("from Item").setCacheMode(CacheMode.IGNORE); 
      或 
      Criteria criteria = session.createCriteria(Item.class).setCacheMode(CacheMode.IGNORE);  

 

上例,CacheMode.IGNORE告诉hibernate不要为这个查询返回的任何实体而与二级缓存交互。换句话说,通过这个查询获取到的任何Item都不放在二级缓存中,如果你执行一个不应该更新二级高速缓存的查询,设置这种高速缓存模式就很有用,或许因为你正在获取的数据只与特定的情况相关,因此不应该耗尽高速缓存区域中的可用空间。


3.setReadOnly()

给特定的持久化对象禁用脏查询的一种方法 是设置session.setReadOnly(object,true)。你可以告诉Hibernate:由查询返回的所有实体对象都应该被当作是只读的。如例:

Query q = session.createQuery("from Item").setReadOnly(true); 

 

由这个查询返回的所有Item对象都处于持久化状态,但是在持久化上下文中,没有给自动脏检查启用任何快照。hibernate不会自动持久化任何修改,除非用session.setReadOnly(object,false)禁用只模式。

4.setTimeout()

设置超时(timeout),来控制允许一个查询运行多久,如例:

Query q = session.createQuery("from Item").setTimeout(60); //1 minute 
      Criteria criteria = session.createCriteria(Item.class).setTimeout(60);  

 

这种方法与JDBC Statement中的setQueryTimeout()方法有着相同的语义和结果。

5.setFetchSize()
设置抓取大小,如例:

Query q = session.createQuery("from Item").setFetchSize(50); 
      Criteria criteria = session.createCriteria(Item.class).setFetchSize(50); 

 

JDBC抓取大小是对数据库驱动程序的一个优化提示:如果驱动程序没有实现这个功能,它就不能导致任何性能改善。如果它实现了,当客户端在一个查询结果(即ResultSet)中操作时,通过在一个批量中获取许多个行,可以改善JDBC客户端和数据库之间的通信。由于Hibernate幕后正在使用ResultSet,如果用list()执行一个查询,这个提示就可以改善数据获取。

6.setLockMode()
可以控制查询是否应该在数据库管理系统中强制悲观锁---这是一直持续到数据库事务结束的锁。如例:

Query q = session.createQuery("from Item item").setLockMode("item",LockMode.UPGRADE); 
      Criteria criteria = session.createCriteria(Item.class).setLockMode(LockMode.UPGRADE);  

这两个查询,如果得到数据库方言的支持,都会生成一个包括...FOR UPDATE操作的SQL声明。

分享到:
评论

相关推荐

    ExtJs4.2+Mysql+Struts2+Hibernate3实现分页查询

    ExtJs4.2+Mysql+Struts2+Hibernate3实现分页查询 1.libs目录缺少hibernate核心jar包 2.libs目录缺少struts jar 3.WebRoot目录缺少ExtJs4.2核心类库 以上信息我都在项目里面注明了,因为这些内容的文件太大了,CSDN不...

    为xdoclet添加hibernate智能提示

    NULL 博文链接:https://zgdkik.iteye.com/blog/1835786

    Spring hibernate SpringMVC整合对数据库操作

    由于spring3.x,基于asm的某些特征,而这些asm还没有用jdk8编译,所以采用Spring 3+JDK8就会报错,提示错误信息( java.lang.IllegalArgumentException),具体解决方案有:1、Spring 3+JDK7及以下版本 2、Spring 4+JDK8...

    hibernate 教程

    开始Hibernate之旅 1.2. 第一个可持久化类 1.3. 映射cat 1.4. 与猫同乐 1.5. 结语 2. 体系结构 2.1. 总览 2.2. JMX集成 2.3. JCA支持 3. SessionFactory配置 3.1. 可编程配置方式...

    Hibernate_Tools_for_eclipse_HbmTool.rar

    下面将介绍如何使用Hibernate Code Generation来产生数据库表映射Java对象,首先要在数据库中创建表,并设置号字段名和主键(主键很重要,关于主键的选择建议你使用与业务无关的ID作为主键);打开Hibernate视图找到...

    基于Prototype + Spring + Hibernate实现的自动提示功能

    基于Prototype + Spring + Hibernate实现的自动提示功能,代码只是简单的实例程序,希望对初学者有所帮助,呵呵。

    基于Hibernate实现的学生选课系统

    为学习Hibernate的初学者提供一个更易入门的实例。

    ajax+hibernate

    ajax+hibernate实现类似于google的输入提示功能..

    hibernate-dtd文件

    Java的hibernate中xml自动提示dtd

    hibernate-mapping-3.0.dtd

    hibernate-mapping-3.0.dtd 配置后,就会在xml中进行提示

    HibernateTools-3.2.4.rar

    开发Hibernate框架的绝对好帮手可以把导入的类也可以提示,是Hibernate开发的必不可少的开发利器

    在项目中使用Hibernate(下)

    在MyEclipse中即使加入了Hibernate组件,也会找不到类(或包)的提示。这时只能是乖乖的把所提示的缺包一一补上咯

    hibernate-configuration-3.0.dtd

    hibernate-configuration-3.0.dtd 文件,配置后 映射文件就会提示

    eclipse_hibernate3.3IDE插件

    这个是hibernate的插件,绝对适用于eclipse3.7,现在我就在用。想想在myclipse的自动提示,在eclipse通过这个插件也可以实现,绝对好用。

    hibernate

    开始Hibernate之旅 1.2. 第一个可持久化类 1.3. 映射cat 1.4. 与猫同乐 1.5. 结语 2. 体系结构 2.1. 总览 2.2. JMX集成 2.3. JCA支持 3. SessionFactory配置 3.1. 可编程配置方式...

    Spring + Hibernate + Struts 事务配置小例子(带提示框等小技巧)

    前几天搞 Spring + Hibernate + Struts 事务配置 ,网上找了好多资料,不过好无语,大多都是 Ctrl + V,浪费俺的宝贵时间 现在我总结配出一套,给大家参考参考,可能有不足,请大家多多交流。 附:内有弹出...

    spring hibernate dtd 文件

    spring struts2 hibernate dtd文件,自动提示

    Hibernate框架笔记

    是一个比较详细的使用笔记,从hiberant框架的搭建,到HQL查询语句的使用,到QBC的查询,有详细的案例,有注意的细节提示。

    Struts+Hibernate做的BBS

    ⑦、安装完成,可至后台添加或修改版面分类、版面,或是进行其它个性化设置。 ⑵、LeadBBS 6.0/6.1免费用户在线升级至6.2的方法(适用版本:LeadBBS 6.0/6.1免费版本): ①、将原论坛数据库文件夹及数据库文件、in...

    hibernate的约束文件(核心配置,映射文件)

    此压缩包内有两文件,一个是hibernate的核心配置文件hibernate.cfg.xml,一个是实体映射文件*.hbm.xml,在配置hibernate文件时需要用到头部的约束,还有在配置没提示时需要用到(附带使用方法)。

Global site tag (gtag.js) - Google Analytics