`
laiseeme
  • 浏览: 124769 次
  • 性别: Icon_minigender_2
  • 来自: 沈阳
社区版块
存档分类
最新评论

Hibernate相关问题

阅读更多
Hibernate相关问题

Hibernate缓存的种类?

答:分为内置缓存和外置缓存两种.

内置缓存的分类:

1、Session中的内置缓存,这个是Hibernate缓存不可缺的组成部分,将持久化对象缓存到Session中

2、SessionFactory中的内置缓存,这个是Hibernate缓存不可缺的组成部分,将一些数据库操作的

Sql语句缓存起来。这个缓存是只读的

持久化层的缓存的范围:

1、事务范围:Session的内置缓存就是一个事务范围的,也就是缓存的生命周期随着事务的建立而产生,

随着事务的结束而消亡。

2、进程范围:缓存被进程内的所有事务共享,这些事务由可能并发访问缓存,因此必须对进程范围的缓存

提供事务隔离机制。

3、集群范围:缓存被同一个机器或多个机器上的多个进程共享。对于大多数应用要慎重考虑集群范围的缓存

由于并发的原因对应用性能影响较大。一般将只读的数据或者很少修改的数据存储到集群范围的缓存中。

外置缓存的支持:

Hibernate提供了EBCache、OSCache、SwarmCache、JBossCache这些第三方插件的适配器。具体的配置方法

请查看相关的文档。

注意:在对数据进行批量处理的时候为了提高性能还是直接通过Hibernate调用底层的数据库操作API。


1


一、Session在什么情况下清理缓存?

答:

1、当应用程序调用Transaction.Commit()方法的时候,先清理缓存,然后再向数据库提交事务。

2、当应用程序调用Session.Find()或者Iterate()方法时,如果缓存中的持久化对象的属性发

生了变化,就会先清理缓存,以保证查询的结果能反映持久化对象的最新状态。

3、当应用程序显式调用Session.Flush()方法的时候。

注意:Session进行清理缓存的例外情况是,如果对象使用native生成器来生成OID,那么当调用Session的Save()

方法保存该对象时,会立即执行向数据库插入该实体的insert语句


二、Session在清理缓存时,会按照什么顺序来执行Sql语句?

答:

1、按照应用程序调用Session.Save()方法的先后顺序,执行所有对实体进行插入的insert语句。

2、执行所有对实体进行更新的update语句。

3、执行所有对集合进行删除的delete语句。

4、执行所有对集合元素进行更新、删除、插入的sql语句。

5、执行所有对集合进行插入的insert语句。

6、按照应用程序调用Sesson.delete()方法的先后顺序,执行所有对实体进行删除的delete语句。


三、Session清理缓存的三种模式


清理缓存的模式


Session查询方法


Session的Commit方法


Session的Flush方法



FlushMode.Auto

清理

清理

清理


FlushMode.Commit

不清理

清理

清理


FlushMode.None

不清理

不清理

清理




四、Session的SaveOrUpdate方法如何工作,如何判断一个对象是临时对象还是游离对象?

答:如何传入的参数是临时对象就调用Save()方法;如果传入的对象是游离对象,就调用Update()方法;如果传入的参数是持久化对象就直接返回。

Hibernate判断临时对象的标准:

1、 实体对象OID为null

2、 实体对象具有version属性并且取值为null

3、 在映射文件中为<id>元素设置了unsaved-value属性,并且OID取值与unsaved-value属性值匹配。

4、 自定义Hibernate的Interceptor实现类,并且Interceptor的isUnsaved()方法返回Boolean.True。

五、在进行对象级联的时候有一个cascade属性,这个属性的属性值代表什么意义?


cascade属性值


描述



none

在保存、更新或者删除对象时,忽略其他关联的对象,它是级联的默认值


save-update

当通过Session的Save()、Update()以及SaveOrUpdate()方法来保存、更新对象时,级联保存关联的临时对象,并更新关联的游离对象。


delete

当通过Session的Delete()方法删除当前对象时,同时会删除关联的所有对象。


all

包含save-update以及delete的行为,此外对当前对象进行Evict()或者Lock()方法时会对关联的对象进行同样的操作。


delete-orphan

删除所有和当前对象解除关联关系的对象。


all-delete-orphan

包含all和delete-orphan的行为。




六、Hibernate在与触发器协同工作的时候如何保持数据的同步?

答:当Session执行Save()方法、SaveOrUpdate()方法、Update()方法时立即执行Session的Reflush()方法,直接绕过Session缓存从数据库中加载数据,


七、如何改变Hibernate操作持久化对象的行为?

答:通过对拦截器接口的实现改变Session的操作行为
分享到:
评论
1 楼 laiseeme 2008-02-26  
http://blog.163.com/hgj_online/blog/static/476742432007101314615933/

相关推荐

    hibernate的相关jar包

    Hibernate是一款强大的...总结,Hibernate的相关jar包是Java开发中进行ORM的重要组成部分,它们提供了数据库操作的便利性。同时,通过正确配置,我们可以方便地查看自动生成的建表语句,以便更好地理解和调试应用程序。

    hibernate相关插件全集

    本篇文章将围绕"hibernate相关插件全集"这一主题,详细介绍给定的压缩包文件中包含的三个关键组件:Middlegen-Hibernate-r5、hibernate-annotations-3.3.0.GA和hibernate-extensions-2.1.3。 首先,Middlegen-...

    hibernate相关jar包

    在你提供的"hibernate相关jar包"中,包含以下几个关键的库文件: 1. **hibernate3.jar**:这是Hibernate的核心库,包含了Hibernate的所有主要组件,如实体管理器、会话工厂、查询API等。这个JAR文件使得开发者能够...

    Hibernate_参考中文版

    - **Stack Overflow**:提问和解答Hibernate相关问题的有效平台。 ### 结语 以上内容涵盖了Hibernate 2.1.6版本的主要知识点,通过这些内容的学习,可以帮助开发者更好地理解和使用Hibernate框架,从而提高开发...

    Hibernate相关jar包括新版本jdk不兼容旧版本的jar.zip

    这个问题在"Hibernate相关jar包括新版本jdk不兼容旧版本的jar.zip"这个压缩包中被提及,表明其中可能包含了针对这种兼容性问题的解决方案。 首先,我们需要理解为什么新版本的JDK可能导致与Hibernate的不兼容性。...

    hibernate源码

    Hibernate 是一个著名的开源Java持久化...这有助于提升开发效率,理解和解决在实际项目中遇到的Hibernate相关问题。对于想要深入理解ORM机制和数据库编程的Java开发者来说,研读Hibernate源码是一次宝贵的学习经历。

    Hibernate面试题专栏 - 最全的Hibernate面试题, Hibernate笔试题, Hibernate问题

    【标题】与【描述】提及的是“Hibernate面试题专栏”,主要涵盖了全面的Hibernate面试题、笔试题以及相关问题,这表明我们将要讨论的是Java领域中著名的...熟悉并理解这些内容对于通过Hibernate相关的面试至关重要。

    spring+hibernate包冲突问题

    - **使用模块化结构**:将Spring和Hibernate相关的代码分隔到不同的模块,降低相互干扰的可能性。 - **测试**:编写单元测试和集成测试,确保在解决冲突后程序仍能正常运行。 - **持续集成**:使用持续集成工具,...

    hibernate5相关jar包

    本压缩包包含了与Hibernate 5相关的jar包,这些jar包是构建和运行基于Hibernate的应用程序所必需的。下面我们将详细探讨Hibernate ORM框架及其相关组件。 1. Hibernate核心库:`hibernate-core.jar` Hibernate的...

    hibernate4所有相关jar包

    hibernate4最新的所有相关jar包

    hibernate有关jar包

    "hibernate有关jar包"是开发人员进行Hibernate开发所必需的依赖库集合。 这些jar包通常包括以下组件: 1. **hibernate-core.jar**:这是Hibernate的核心库,包含了ORM的主要功能,如实体管理、会话管理、查询语言...

    各种hibernate相关jar包

    标题中的“各种hibernate相关jar包”表明这是一个与Hibernate框架相关的软件库集合,其中包含了许多用于支持Hibernate操作的Java类库。Hibernate是一个强大的对象关系映射(ORM)框架,它允许开发人员在Java应用程序...

    Hibernate update问题

    总之,理解Hibernate的更新机制以及如何处理相关问题对于优化应用程序性能和提高开发效率至关重要。在实践中,应根据具体需求选择合适的方法,并注意避免并发更新可能导致的冲突,确保数据的一致性和完整性。

    Hibernate需要注意的问题

    《Hibernate需要注意的问题与数据源配置详解》 在Java企业级开发中,Hibernate作为一种流行的ORM(对象关系映射)框架,极大地简化了数据库操作。然而,使用Hibernate的过程中,开发者需要特别注意一些关键点,以...

    Hibernate Hibernate5 讲义 PDF

    主配置文件则包含数据库连接的相关属性值,它描述了Hibernate与数据库交互的方式。 Hibernate工作原理的理解是掌握该框架的核心内容。Hibernate使用配置好的映射文件和主配置文件,在运行时自动将数据对象转换成...

    Hibernate,hibernate笔记

    对于MyEclipse项目,可能需要在`.project`文件中添加Hibernate的nature,确保能够正确识别和处理Hibernate相关操作。如果遇到错误,例如配置错误导致browse无法选择正确的项目目录,可能需要手动修改`.project`文件...

    Hibernate框架jia包

    Hibernate框架是中国Java开发领域广泛应用的对象关系映射(ORM)框架,它简化了数据库与Java对象之间的交互。这个“Hibernate框架jia包”包含了你需要在项目中使用Hibernate的所有核心库和依赖,确保你能顺利进行...

    hibernate基础jar包

    这个压缩包包含了Hibernate的基础jar包,这些jar文件是开发Hibernate应用所必需的库文件,它们提供了Hibernate的核心功能和相关依赖。同时,还包含了Junit4测试工具,这是进行单元测试的常用框架,对于确保代码质量...

Global site tag (gtag.js) - Google Analytics