`
bjlf1105
  • 浏览: 25497 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

初学Hibernate(一)

阅读更多

 

Hibernate 简单开发步骤:

1 、准备工作:引入 Hibernate 包及其依赖包和 jdbc 驱动包,并在 Hibernate 文件中的project/etc 下,拷贝log4j.properties 放到项目类路径中

2 、创建实体类 : 实体类一般指的是只有 attrbute property java 类,并且这个类必须有一个无参的构造方法

3 、创建实体类映射文件 (User.hbm.xml) 可从示例project\tutorials\eg\src\main\resources\org\hibernate\auction 目录下拷贝,一般与model 放一个包下;

4 、创建 Hibernate 配置文件 hibernate.cfg.xml

hibernate.cfg.xml 文件 -> project\tutorials\web\src\main\resources \ 找到hibernate.cfg.xml 文件,有关数据库连接配置 -> project/etc/hibernate.properties 找到其中的配置

5 、利用 Hibernate API 测试下

读取类路径根目录下的 hibernate.cfg.xml 配置文件,创建 SessionFactory ,创建 Hibenate Session

开启事务— >CRUD 操作— > 持久化对象— > 提交事务— > 出现异常,需回滚事务— > 关闭 session ,一般 R 不用什么事务处理

Hibernate UD 操作:

1.         session 更新时,应当注意先把对象 load 上来,然后更新它,那么这个对象就是持久化的对象了,其他字段或属性更新时就不会置为空,因为 Hibernate 会把所有的属性更新一遍,结果原来的属性如果变化了则更新,没变化则还是原来的值;假如是 new 出来然后 setId 接着 set 属性,这样的话,因为这个 new 出来的对象是离线对象,接着 update 会把它更新成持久化对象,相应的其他没更新的属性也要更新。

2.         delete 则不会发生上面的现象,因为 delete 是把持久化对象弄成瞬时对象,因此就不会出现上面的现象。

Hibernate load 延迟加载:

1.         调用 load 方法时(在设置 lazy TRUE 的情况下),会出现延迟加载的现象,当真正使用到这个对象的属性时才发 Sql 语句,但有人会奇怪取得这个对象的 id 时却没发出 sql 语句,因为 load 本身就是根据 id load 的,所以 id 它本身就在内存中,如下面的语句: session.load(User.class , 8) ,这个 8 已经存在内存中了。

2.         Hibernate 中查找不存在的记录用 get 或者设置成 false load, 会抛出 ObjectNotFoundException: No row with the given identifier exists ,而设置成 lazy=true 则不会报错,但在真正使用到这个对象的属性时会报错 ObjectNotFoundException

3.           懒加载只有在 session 打开的状态下才有效, session 关闭将不会再加载延迟对象 , 假设这属性已经存在的话,它就不会抛这个异常,因为这个对象的属性已经加载到内存中 LazyInitializationException:could not initialize proxy - no Session

4.         比较 get 操作,它一执行完立马发出 sql 语句

Session 什么时候发出 insert/update/delete/select 语句

1.      id 生成策略是 native ,调用 save 方法,马上发出 insert 语句,将内存中的状态同步到数据库, id 生成策略是 uuid ,提交后才发出 insert 语句。

2.         关于更新操作,一般先 get load 加载这个对象到内存中,然后更新的话 Hibernate 会检查更新的属性有没有变化,没变化则不会发 sql 语句,有变化才发出 update 语句,因此更新持久化的对象时没必要显示地调用 update 方法,因为提交后才发出 sql ,删除也一样的, Hibernate 它会尽量延迟发出 sql 语句

 

分享到:
评论

相关推荐

    初学hibernate,hibernate入门

    **初学Hibernate,Hibernate入门** Hibernate是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了方便的数据持久化服务。在Java应用中,通过Hibernate,开发者可以将数据库操作抽象成对象模型,使得代码...

    初学Hibernate的例子,

    【初学Hibernate的例子】 Hibernate是Java领域中一个非常流行的持久化框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是数据存取的细节。本示例将带你逐步了解如何使用Hibernate3.6进行数据库操作。...

    hibernate的第一个例子

    **标题解析:**“hibernate的第一个例子”表明这是一个关于Hibernate框架的基础教程,主要目标是展示如何使用Hibernate进行数据持久化操作。 **描述分析:**描述提到这是一个超级简单的例子,包含一个持久化对象...

    hibernate初学者很好的资料

    Hibernate 是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了强大的工具来管理和持久化应用程序中的数据。...这份资料对初学者来说是一个很好的起点,它将帮助你在短时间内理解和上手Hibernate的核心功能。

    hibernate初学.ppt

    hibernate初学

    hibernate第一个hibernate

    本教程将带领初学者深入理解Hibernate的第一个项目,帮助你快速入门并掌握其核心概念。 1. Hibernate概述: Hibernate是一个开源的Java库,它提供了一种在Java应用中持久化数据的方式,使得开发者无需编写大量的...

    Hibernate初学者简单代码

    在IT行业中,Hibernate是一个非常重要的Java持久化框架,它简化了数据库操作,使得开发者能够更加专注于业务逻辑,而不是底层的数据存取细节。本教程将基于“Hibernate初学者简单代码”这个主题,深入探讨Hibernate...

    hibernate第一个例子

    本示例将引导初学者了解如何使用Hibernate进行简单的数据库连接和操作。 首先,我们需要理解Hibernate的核心概念:实体类、配置文件、会话工厂和会话。实体类是与数据库表相对应的Java类,配置文件(hibernate.cfg....

    Hibernate Annotation 共享主键一对一双向关联

    对于初学者来说,熟悉Hibernate的API文档和相关教程也是必不可少的。 总之,掌握Hibernate Annotation中的共享主键一对一双向关联,能够帮助开发者更高效地进行数据库操作,提升项目的开发效率。通过深入学习和实践...

    hibernate初学者笔记

    关于hibernate的Session,向数据插入时的事务隔离级别,持久化对象的状态,对应关系的映射文件,表与表之间的多种映射关系,以及hibernate的二级缓存的笔记。

    Hibernate双向一对多经典实例

    这个实例适合初学者学习,旨在帮助理解Hibernate如何处理双向一对多关系。通过实践,新手可以了解如何配置映射文件、定义实体类以及编写必要的数据库操作代码。对于经验丰富的开发者来说,此实例可能过于基础,但...

    hibernate一对一实例

    本教程“Hibernate一对一实例”是为初学者设计的,旨在帮助你们理解并掌握Hibernate框架中的一对一映射关系。 一、Hibernate简介 Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发者用Java对象来表示...

    特别适合初学者的hibernate教程课件

    Hibernate 是一个开源的对象关系映射(ORM)框架,它允许Java开发者使用面向对象的方式来操作数据库。这个"特别适合初学者的Hibernate教程课件"显然旨在帮助新手快速掌握Hibernate的核心概念和使用方法。以下是对...

    菜鸟快速运行第一个hibernate

    标题“菜鸟快速运行第一个hibernate”表明了这是一个针对初学者的教程,旨在帮助他们快速上手并成功运行他们的第一个Hibernate项目。Hibernate是一个强大的Java ORM(对象关系映射)框架,它简化了数据库操作,使得...

    hibernate初学项目

    **hibernate初学项目** 本项目旨在帮助初学者了解并掌握Hibernate框架的基本用法。...通过这三个实例,初学者将对Hibernate有一个全面而基础的认识,为进一步深入学习和使用Hibernate打下坚实的基础。

    hibernate初学者jar包

    总之,这个“hibernate初学者jar包”是一个良好的起点,它提供了构建Hibernate环境的基础组件。在学习过程中,结合实例代码和文档,你将能够掌握这一强大的ORM框架,为你的Java开发之旅添加强大的工具。

    hibernate一对一映射

    "hibernate一对一映射"是Hibernate中的一个重要概念,它用于表示两个实体类之间一对一的关系。这种关系意味着在一个实体类中,每个实例都唯一对应另一个实体类的单个实例。 一对一映射有以下几种实现方式: 1. **...

    Hibernate一对多主键关联映射源代码

    本教程通过源代码的形式,讲解如何在Hibernate中实现一对多主键关联映射,适用于初学者学习。 首先,我们需要理解一对多关联的基本概念。在数据库中,一个表的某一列(主键)可能与另一个表的多行相关联,比如一个...

    深入浅出Hibernate(PDF)第一部分

    Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供读者对比与参考,也给初学者提供了一个快带起步的基础。...

    SSH初学笔记Hibernate Spring Struts

    **Hibernate框架**:Hibernate是一个强大的对象关系映射(Object-Relational Mapping,ORM)框架,它简化了Java应用与数据库之间的交互。Hibernate允许开发者使用Java对象来操作数据库,而无需编写SQL语句。它提供了...

Global site tag (gtag.js) - Google Analytics