`
conkeyn
  • 浏览: 1524577 次
  • 性别: 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声明。

分享到:
评论

相关推荐

    为xdoclet添加hibernate智能提示

    为了确保智能提示功能的正常工作,可能还需要在IDE的设置中配置XDoclet插件,使IDE能够识别和处理这些特殊注释。例如,在Eclipse中,需要在“首选项”->“Java”->“编辑器”->“内容助手”中启用“其他注释处理器”...

    Hibernate的查询 测试的架子

    至于`工具`,像IntelliJ IDEA或Eclipse这样的集成开发环境提供了强大的Hibernate支持,包括代码提示、对象关系映射编辑器以及集成的调试工具。这些工具可以帮助我们在编写和测试查询时提高效率,同时也能帮助我们...

    Hibernate_QBC和Hibernate_QBE

    Query By Example(QBE)则是通过实例化一个对象,并设置其属性值,然后将这个对象作为查询的模板,Hibernate会根据对象的属性值生成对应的WHERE子句进行查询。这种方式在处理简单查询时非常直观,但当查询条件变得...

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

    在自动提示功能中,Hibernate可能是用来从数据库中检索匹配的数据,比如根据用户的输入查询相关的建议条目,并将结果转换为JSON格式,返回给前端。 具体实现流程可能是这样的:当用户在输入框中输入字符时,...

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

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

    Hibernate Tool 使用文档

    - **Java property/class completion**:在编辑Hibernate映射文件时,Eclipse会自动提示Java属性和类的完成建议。 - **Table/Column completion**:在映射文件中输入表名或列名时,提供自动补全功能。 - **...

    Java Hibernate

    - **配置 Hibernate**:首先需要设置 Hibernate 的核心配置文件 `hibernate.cfg.xml`,并定义实体类与数据库表之间的映射关系。 - **创建实体类**:定义 Java 类,并使用注解或 XML 配置文件指定这些类与数据库表的...

    Hibernate做的留言板

    【标签】"3 Hibernate 源代码" 提示我们,这个项目使用了Hibernate 3版本。Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互。通过将Java类与数据库表关联,Hibernate自动处理SQL...

    Hibernate教程24_Hibernate的补充_list与iterator

    标签"Hibernate"提示我们,本教程的核心内容是关于Hibernate的使用技巧。 【知识点详解】 1. **Hibernate Query Language (HQL)** HQL是Hibernate提供的面向对象的查询语言,类似于SQL,但更专注于操作对象而非...

    ajax+hibernate

    在这个项目中,"ajax+hibernate"的结合被用来实现一个类似于Google输入提示的功能,这涉及到用户在搜索框输入时,后台实时查询并返回相关建议。 首先,让我们详细了解一下Ajax。Ajax是一种在无需刷新整个网页的情况...

    hibernate for netbeans 6.1

    - **集成HQL编辑器**:提供HQL(Hibernate Query Language)的语法高亮和智能提示,提高了查询编写效率。 - **版本控制**:与Git、SVN等版本控制系统无缝集成,便于团队协作和代码版本管理。 总之,Hibernate for ...

    Eclipse 在线配置 Hibernate Tools

    通过以上步骤,你已经成功地在 Eclipse 中配置了 Hibernate Tools,现在可以利用其各种功能,如生成实体类、映射文件、HQL查询编辑器等,提高你的 Hibernate 开发效率。在实际开发中,熟悉和熟练使用这些工具将极大...

    hibernate开发流程 入门

    通过设置页面选择Hibernate3.1,指定数据库连接(例如在Database Explorer中已配置的mssql connection),并设置SessionFactory类的生成位置。 3. **创建数据表**:根据需求,创建数据库表,例如这里提到的USERINFO...

    hibernate的注册和登陆

    本实例将深入探讨如何使用Hibernate实现用户注册和登录功能,这涉及到的主要知识点包括:Hibernate的基本配置、实体类定义、数据持久化、Session接口、Transaction管理以及SQL查询的映射。 首先,要使用Hibernate,...

    Hibernate+struts2框架

    对于详细信息展示,可能通过用户ID来获取特定用户的信息,同样使用Hibernate的查询机制。 总的来说,这个项目涵盖了Hibernate和Struts2的基础使用,包括数据库操作、用户认证、权限控制以及数据的展示。对于初学者...

    hibernateTools3.3

    3. **设置数据库连接**:在Hibernate配置文件(hibernate.cfg.xml)中指定数据库连接信息。 4. **反向工程**:使用Hibernate Tools生成实体类和映射文件,或者根据实体类生成数据库表。 5. **运行Ant/Maven任务**:...

    Hibernate Tools使用指南

    除了上述功能,Hibernate Tools还提供了HQL查询编辑器、实体类图视图等功能,方便开发者进行数据库相关的操作和调试。 总之,Hibernate Tools是提高Java开发效率的好帮手,熟练掌握其使用方法,能让你在处理ORM相关...

    hibernate tools插件安装

    【hibernate tools插件安装】是关于Java开发中的一款实用工具,主要目的是为了提高开发效率,特别是针对使用Hibernate框架的项目。Hibernate Tools是Hibernate官方提供的一个扩展,它集成了Eclipse、IntelliJ IDEA等...

    HIBERNATE FOR NETBEANS 数据操作方法

    - 在更新中心中选择“手动安装”,然后添加刚刚下载的`.nbm`文件,按照提示完成安装过程。 - 安装完成后,再次通过“更新中心”检查并安装Hibernate插件。这个过程可能需要联网,找到Hibernate插件,接受协议,...

    MyEclipse+Hibernate快速入门中文版

    2. **添加Hibernate支持**:在项目上右键,选择“Add Hibernate Capabilities”选项,按照提示完成Hibernate环境的配置。 3. **自定义配置文件**:根据项目的具体需求,修改`hibernate.cfg.xml`文件中的配置项。 4. ...

Global site tag (gtag.js) - Google Analytics