一个数据库创建一个SesssionFactory 实例,因为随意创建SessionFactory实例会占用大量的内存空间。
SessionFactory的缓存可以分为两类:内置缓存和外置缓存。SessionFactory的内置缓存中存放了Hibernate配置信息和映射元素数据信息等。SessionFactory的外置缓存是一个可配置的缓存插件。在默认情况下,SessionFactory不会启用这个缓存插件,外置缓存存放大量数据库数据的拷贝。外置缓存的物理介质可以时内存或者硬盘。
访问Hibernate的Session接口:
初始化过程结束后,就可以调用SessionFactory实例openSession方法获取Session实例。然后通过它执行访问数据库的操作。Session接口提供了操作数据库的各种方法。Session是一个轻量级对象。通常将每一个Session实例和一个数据库事务绑定,也就是说每执行一个数据库事务,都应该先创建一个新的Session实例,如果事务执行中出现异常,应该撤销事务。不论事务是否执行成功与否,最后都应该调用Session的关闭方法close方法,从而释放Session实例占用的资源。
在开发最好设置show_SQL 为true,便于观察执行sql操作过程的,优化程序。
定制持久化类:
<meta>元素用于精粒度的控制java源代码的内容。用于类和属性等。使用meta仅仅想针对紧靠的类设置采用两种方式:
◆<meta attribute=”extends” inherit=”false”> package.class </meta>放在需要的类跟前即可。
◆把<meta>元素嵌套到class元素里面。
定制数据表:<property>元素的<column>子元素用于精粒度的控制表的定义。
对象关系映射基础:
对于持久化类的OID,推荐使用包装类型。
Hibernate访问持久化类属性的策略:在对象关系映射中,使用<property>元素的access属性用于定制hibernate访问持久化类的属性的方式
◆property:默认值,表明hibernate通过相映的set、get方法持久化类的属性的方式。
◆field:表明hibernate运用java反射机制直接访问类的属性。
◆除了定义上面的值外,也可自定义属性访问方式。必须船检一个实现net.sf.hibernate.propert.PropertyAccessor接口的类。然后把类的完整名称赋值给<property>元素的access属性。
HQL和QBC查询对应的select语句必须在执行该代码时才能动态生成。静态预处理的语句实现在SessionFactory启动时读取配置文件时存储在
存中。在执行save,update,delete和load时从缓存中查找相映的预处理sql语句
再把具体的参数值绑定到该sql语句中。在默认情况下,预定义的sql语句中包含
了表中所有的字段。
如果不想在时在sql中使用响应的属性,必须使用update=false或insert=false的映射属性。
用于控制insert和updat语句的映射属性
映射属性
|
作用
|
Property的Insert
|
False:在insert语句不包含,默认为true
|
Property的Update
|
False:update语句不包括此字段短,默认true
|
Class的mutable
|
如果false等价所有属性为update的属性为false,表示整个实例不能被更新,默认为true
|
Property的dynamic-insert
|
True:表示保存一个对象,会动态生成insert语句,只有这个字段取值部位null,才会把它包含到insert语句中默认false
|
Property的dynamic-update
|
True:表示保存一个对象,会动态生成update语句,只有这个字段取值有变化才会包含到update中,默认false
|
Class的dynamic-insert
|
如果true等价所有的property的dynamic-insert属性为true,表示当保存一个对象时,会动态生成insert语句,insert中字段包括所有取值不为null的字段,默认为false
|
Class的dynamic-update
|
如果true等价所有的property的dynamic-update属性为true,表示当保存一个对象时,会动态生成update语句,update中字段包括所有取值变化的字段,默认为false
|
分享到:
相关推荐
《Hibernate DOC中文文档》是学习Hibernate框架的重要参考资料,它详细...无论是想要快速入门,还是深入研究,这份文档都是一份不可多得的学习资料。只要你耐心研读,掌握Hibernate并运用到实际项目中将不再是难题。
### Hibernate 学习文档知识点详解 #### 一、概述 Hibernate 是一款开源的对象关系映射 (Object ...对于想要深入学习 Hibernate 的读者来说,建议进一步研究其源码及更多实践案例,以便更好地掌握这项强大的技术。
在这个"hibernate学习源代码祝你提高"的资料包中,我们可以深入理解 Hibernate 的工作原理和设计模式,这对于初学者提升技能非常有帮助。该资源主要针对 Hibernate 3.x 版本,这是一个广泛使用的版本,包含了丰富的...
《Hibernate学习研究》这篇文章主要介绍了Hibernate这一Java持久化框架的基础知识和使用方法。Hibernate是一个ORM(对象/关系映射)框架,它允许开发者用面向对象的方式来处理数据库操作,从而简化了Java应用程序与...
【尚学堂Hibernate学习笔记】是一份详尽的学习资料,旨在帮助初学者理解并掌握Hibernate这一流行的Java对象关系映射(ORM)框架。该笔记由作者根据马士兵老师的教程整理而成,其中包含了个人的学习注解,使得内容...
Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发者使用Java对象来操作数据库,而无需直接编写SQL语句。...通过对"hibernate-one2many"的分析,我们可以深入研究和实践一对一和一对多关联关系的配置和操作。
《Hibernate学习源码详解》 Hibernate,作为Java领域中的一款著名对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以更加专注于业务逻辑的实现,而非底层的SQL语句。本资料包含了多个阶段的...
【hibernate五天学习笔记】是一份详细的Java ORM框架Hibernate的学习资料,旨在帮助开发者深入理解和掌握Hibernate的核心概念和技术。ORM(Object-Relational Mapping)是将数据库中的关系数据与Java对象进行映射的...
【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...
本项目“Hibernate学习:单向多对一关联 工程”专注于讲解Hibernate中的单向多对一关联映射,这是数据库设计中常见的关系类型,尤其在处理具有层次结构的数据时。 单向多对一关联指的是在一个实体类中有一个引用,...
在IT行业中,Hibernate...在进一步研究源码时,可以深入了解Hibernate是如何在内部处理这些关联的,以及如何优化这些操作以提高性能。同时,熟练运用相关工具,如IDEA的代码生成功能,可以帮助快速构建和调试这些关联。
本篇文章将全面探讨Hibernate的关联映射学习,包括一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)以及多对多(Many-to-Many)四种关系映射。 首先,一对一关联映射(One-to-One)是两个实体...
标签中的"源代码"意味着我们可以深入研究项目的内部工作原理,这对于学习和理解Hibernate的使用方法非常有价值。 在【压缩包子文件的文件名称列表】中,虽然只给出了"HiMe",但通常一个Web应用项目会包含以下部分:...
【标题】"hibernate-release-4.1.4" 是Hibernate...通过深入研究这个压缩包,开发者不仅可以了解Hibernate的基本用法,还能掌握更高级的功能,如事务管理、缓存策略、查询语言(HQL)等,从而提升开发效率和代码质量。
学习完基础后,可深入研究Hibernate的高级特性,如 Criteria API、Hibernate Search 和 JPA 规范等。 总之,"hibernate第一个hibernate"项目是一个绝佳的起点,它将引导你了解并掌握Hibernate的基本概念和操作。...
这些资料构成了一套完整的Hibernate学习路径,从基础到高级,从配置到实践,对于理解Hibernate的核心机制和提升开发技能都非常有帮助。通过阅读和研究这些内容,开发者可以更熟练地运用Hibernate进行数据库操作,...
《Hibernate的两本英文书籍》可能指的是更深入的原版文档或者专业著作,这些书籍通常会包含最新的技术信息和最佳实践,对于想要深入研究Hibernate或者保持技术更新的开发者来说是不可或缺的资源。可能涵盖的主题包括...
【Hibernate学习笔记第一次课】 在本课程中,我们将深入探讨Hibernate框架的基础知识,这是一个流行的Java对象关系映射(ORM)工具,它简化了数据库与Java应用程序之间的交互。我们的重点是Hibernate 3.1版本,虽然...
Hibernate是Java领域中一款广泛应用的关系型数据库对象映射...总之,对Hibernate源码的学习不仅可以提升数据库操作的技能,还可以帮助开发者更好地理解和解决实际项目中的问题,实现更高效、更灵活的数据访问层设计。
Struts和Hibernate是Java Web开发中的两个重要框架,它们在构建...通过研究这个项目,开发者不仅可以学习到如何整合Struts和Hibernate,还能了解到如何在MyEclipse环境中进行开发,这对提升Java Web开发技能大有裨益。