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是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了方便的数据持久化服务。在Java应用中,通过Hibernate,开发者可以将数据库操作抽象成对象模型,使得代码...
【初学Hibernate的例子】 Hibernate是Java领域中一个非常流行的持久化框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是数据存取的细节。本示例将带你逐步了解如何使用Hibernate3.6进行数据库操作。...
**标题解析:**“hibernate的第一个例子”表明这是一个关于Hibernate框架的基础教程,主要目标是展示如何使用Hibernate进行数据持久化操作。 **描述分析:**描述提到这是一个超级简单的例子,包含一个持久化对象...
Hibernate 是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了强大的工具来管理和持久化应用程序中的数据。...这份资料对初学者来说是一个很好的起点,它将帮助你在短时间内理解和上手Hibernate的核心功能。
hibernate初学
本教程将带领初学者深入理解Hibernate的第一个项目,帮助你快速入门并掌握其核心概念。 1. Hibernate概述: Hibernate是一个开源的Java库,它提供了一种在Java应用中持久化数据的方式,使得开发者无需编写大量的...
在IT行业中,Hibernate是一个非常重要的Java持久化框架,它简化了数据库操作,使得开发者能够更加专注于业务逻辑,而不是底层的数据存取细节。本教程将基于“Hibernate初学者简单代码”这个主题,深入探讨Hibernate...
本示例将引导初学者了解如何使用Hibernate进行简单的数据库连接和操作。 首先,我们需要理解Hibernate的核心概念:实体类、配置文件、会话工厂和会话。实体类是与数据库表相对应的Java类,配置文件(hibernate.cfg....
对于初学者来说,熟悉Hibernate的API文档和相关教程也是必不可少的。 总之,掌握Hibernate Annotation中的共享主键一对一双向关联,能够帮助开发者更高效地进行数据库操作,提升项目的开发效率。通过深入学习和实践...
关于hibernate的Session,向数据插入时的事务隔离级别,持久化对象的状态,对应关系的映射文件,表与表之间的多种映射关系,以及hibernate的二级缓存的笔记。
这个实例适合初学者学习,旨在帮助理解Hibernate如何处理双向一对多关系。通过实践,新手可以了解如何配置映射文件、定义实体类以及编写必要的数据库操作代码。对于经验丰富的开发者来说,此实例可能过于基础,但...
本教程“Hibernate一对一实例”是为初学者设计的,旨在帮助你们理解并掌握Hibernate框架中的一对一映射关系。 一、Hibernate简介 Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发者用Java对象来表示...
Hibernate 是一个开源的对象关系映射(ORM)框架,它允许Java开发者使用面向对象的方式来操作数据库。这个"特别适合初学者的Hibernate教程课件"显然旨在帮助新手快速掌握Hibernate的核心概念和使用方法。以下是对...
标题“菜鸟快速运行第一个hibernate”表明了这是一个针对初学者的教程,旨在帮助他们快速上手并成功运行他们的第一个Hibernate项目。Hibernate是一个强大的Java ORM(对象关系映射)框架,它简化了数据库操作,使得...
**hibernate初学项目** 本项目旨在帮助初学者了解并掌握Hibernate框架的基本用法。...通过这三个实例,初学者将对Hibernate有一个全面而基础的认识,为进一步深入学习和使用Hibernate打下坚实的基础。
总之,这个“hibernate初学者jar包”是一个良好的起点,它提供了构建Hibernate环境的基础组件。在学习过程中,结合实例代码和文档,你将能够掌握这一强大的ORM框架,为你的Java开发之旅添加强大的工具。
"hibernate一对一映射"是Hibernate中的一个重要概念,它用于表示两个实体类之间一对一的关系。这种关系意味着在一个实体类中,每个实例都唯一对应另一个实体类的单个实例。 一对一映射有以下几种实现方式: 1. **...
本教程通过源代码的形式,讲解如何在Hibernate中实现一对多主键关联映射,适用于初学者学习。 首先,我们需要理解一对多关联的基本概念。在数据库中,一个表的某一列(主键)可能与另一个表的多行相关联,比如一个...
Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供读者对比与参考,也给初学者提供了一个快带起步的基础。...
**Hibernate框架**:Hibernate是一个强大的对象关系映射(Object-Relational Mapping,ORM)框架,它简化了Java应用与数据库之间的交互。Hibernate允许开发者使用Java对象来操作数据库,而无需编写SQL语句。它提供了...