Hibernate 接口

HIbernate主要包含如下几个接口:Session,Query,Criteria以及Transaction。这些接口的实现在幕后是紧密相连的。

在一个HIbernate应用程序中,通过实质上改变他们的状态来保存和加载对象,我们在工作单元中进行这项工作。单个工作单元是一组被认为是原子团的操作。

1、开始工作单元

		Session session1 = factory.openSession();
		Transaction tx1 = session1.beginTransaction();

 一个新的持久化上下文被初始化了并同时开始了一个事务,它将管理这个session中所有的对象。如果需要访问多个数据库就会有多个sessionfactory对象

sessionfactory对象的创建十分昂贵,所以不应该针对同一个数据库连接重复创建sessionfactory对象。

2、持久化对象

		Message item = new Message();
		Serializable itemId = session1.save(item);
		tx1.commit();
		session1.close();

  调用save()使得瞬时对象item变成了持久化,同时调用commit()时对持久化对象所做的变化与数据库进行了同步,hibernate获得了一个jdbc连接,并执行sql insert语句。save()函数将返回持久化实例的数据库标识符(取决于自己配置的标识符生成器)。

  session最终被close()方法关闭,item引用处于脱管状态。

  如果在事务发生期间发生异常了,hibernate对持久化对象所做的所有变化将进行数据库级别的回滚。要注意的是,hibernate将不会把内存变化会滚到持久化对象。因此需要放弃失败的session。

3、获取持久化对象

  

		Session session = sessionFactory.openSession();
		Transaction tx = session.beginTransaction();

		Object item = session.get(Message.class, new Long(1234));

		tx.commit();
		session.close();

  hibernate提供了get、load两种方法通过标识符获取持久化对象。获取到的对象处于持久化状态,一旦持久化上下文关闭,该对象将处于脱管状态。

  get和load的一个区别在于当无法找到给定标识符关联的对象时,get()方法返回一个null而load()方法将抛出ObjectNotFoundException。

  更重要的是load()方法始终试图返回一个代理,即不发生数据库命中而get()方法从不返回代理,每一次都将命中数据库。

4、修改持久化对象

  对持久化实例进行修改,当事务的commit()被调用时,所做的修改将被传播到数据库。这种机制叫做自动脏检查(意味着hibernate追踪并保存在持久化状态中对一个对象所作出的改变)。

5、使持久化对象变成瞬时对象

  

		Session session = sessionFactory.openSession();
		Transaction tx = session.beginTransaction();

		Message item = new Message();
		item.setText("msg1");
		Serializable itemId = session.save(item);

		Object obj = session.load(Message.class, (Long)itemId);
		session.delete(obj);

		tx.commit();
		session.close();

  调用delete()之后,这个对象处于移除状态(removed),此时不应该再继续使用它。commit()后,执行SQL DELETE操作。Session关闭后,该对象被认为是一个普通的瞬时实例。最终将被垃圾回收器收回。

  如果启用了hibernate.use_identifier_rollback配置选项,hibernate会在删除后设置被删除的对象的标识符属性为NULL,成为一个可以在后期被复用的干净瞬时实例。

时间: 2024-10-30 16:57:10

Hibernate 接口的相关文章

Hibernate(八)__级联操作、struts+hibernate+接口编程架构

级联操作 所谓级联操作就是说,当你进行主对象某个操作时,从对象hibernate自动完成相应操作. 比如: Department <---->Student 对象关系,我希望当我删除一个department ,那么就自动删除该部门的所有学生. 再比如: bbs项目主帖<---->回帖 , 把主帖删除,那我们就希望把该主帖的回帖自动删除,这样我们可以使用级联(cascade)操作. 案例:如何配置级联操作,当删除某个部门的时候,我们自动删除其学生. 首先我们在配置文件中修改: <

Hibernate学习笔记--------1.单表操作

一.hibernate基本开发步骤 1.引入包,官网下载的包,目录\lib\required下的jar都加进去,这里使用的是 hibernate-release-5.2.1.Final 2.编写配置文件hibernate.cfg.xml,可用hibernate Tools自动生成 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3

Hibernate学习之——Hibernate环境搭建

之前在写关于安卓闹钟的教程,写了一半就没后一半了,其实自己也没做好,在校外实习,校内毕业实习又有任务,只能先放放了,等毕业实习结束之后,在继续安卓闹钟开发之旅,相信这个时间不会很久的.现在毕业实习用到的SSH框架(Struts+Spring+Hibernate),自己没有多少时间去好好学习,但是还是想把学到的东西记录下来. 一.Hibernate简介 1.什么是Hibernate? Hibernate是数据持久层的一个轻量级框架.数据持久层的框架有很多比如:iBATIS,myBatis,Nhib

Hibernate学习0.Hibernate入门

Hibernate是什么 面向java环境的对象/关系数据库映射工具. 1.开源的持久层框架. 2.ORM(Object/Relational Mapping)映射工具,建立面向对象的域模型和关系数据模型之间的映射. 3.连接java应用和数据库的中间件. 4.对JDBC进行封装,负责java对象的持久化. 5.在分层结构中处于持久化层,封装对数据库的访问细节,使业务逻辑层更专注于实现业务逻辑 Hibernate作用 Hibernate是Java应用和关系数据库之间的桥梁,它负责Java对象和关

Hibernate理论

1.什么是Hibernate? Hibernate是数据持久层的一个轻量级框架.数据持久层的框架有很多比如:iBATIS,myBatis,Nhibernate,Siena等等.并且Hibernate是一个开源的orm(Object relations mapping)框架,提供了查询获取数据的方法,用面向对象的思想来操作数据库,节省了我们开发处理数据的时间. 2.Hibernate的优点 1).使用简介的hql语句(Hibernate query language).可以不使用传统的insert

Hibernate之HQL总结

hibernate运行过程: Hibernate作用 1.hibernate是java应用和关系数据库之间的桥梁,她负责java对象和关系数据库之间的映射. 2.hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供了面向对象的数据访问API. Hibernate API简介 1.提供访问数据库操作(session,transaction,query) 2.配置hibernate接口(configuration) 3.回调接口(Interceptor,Lifecycle,Vai

Hibernate进化史-------Hibernate概述

一.Hibernate概述 什么是Hibernate呢?首先,Hibernate是数据持久层的一个轻量级框架,实现了ORMapping原理(Object Relational Mapping). 在说hibernate之前,简单说一下什么是ORM. ORMapping基本对应规则:(这是查到的一些资料,有些规则,还没有考究) 1:类跟表相对应 2:类的属性跟表的字段相对应 3:类的实例与表中具体的一条记录相对应 4:一个类可以对应多个表,一个表也可以对应对个类 5:DB中的表可以没有主键,但是O

Hibernate学习(1)简介

1.什么是Hibernate? 首先,Hibernate是数据持久层的一个轻量级框架.数据持久层的框架有很多比如:iBATIS,myBatis,Nhibernate,Siena等等. 并且Hibernate是一个开源的orm(object relations mapping)框架,提供了查询获取数据的方法,用面向对象的思想来操作数据库,节省了我们开发处理数据的时间. 2.那使用Hibernate的优点呢? 1.使用简介的hql语句(Hibernate query language).可以不使用传

Hibernate简介与实例

一.Hibernate简介 1.什么是Hibernate? Hibernate是数据持久层的一个轻量级框架.数据持久层的框架有很多比如:iBATIS,myBatis,Nhibernate,Siena等等.并且Hibernate是一个开源的orm(Object relations mapping)框架,提供了查询获取数据的方法,用面向对象的思想来操作数据库,节省了我们开发处理数据的时间. 2.Hibernate的优点 1).使用简洁的hql语句(Hibernate query language).