Hibernate运行过程

来源:互联网 发布:zara淘宝 编辑:程序博客网 时间:2024/06/05 18:40
扫盲:-----------------------------------------------------------------------------------
1.什么是对象持久化?
持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中。
-------------------------------------------------------------------------------------------

什么是Hibernate?
Hibernate,冬眠。对对象来说就是持久化。

Hibeinate的运行过程:


图1-1

Hibernate的运行过程:
1.应用程序先调用Configuration类,该类读取Hibernate的配置文件及映射文件中的信息,并用这些信息生成一个SessionFactory对象。
2.然后从SessionFactory对象生成一个Session对象,并用Session对象生成Transaction对象。可通过Session对象的get(),load(),save()等操作PO;
3.如果没有异常,Transactiion对象将提交这些操作结果到数据库。

代码:
public static void main(String[] args) {//代表了配置文件Configuration cfg = new Configuration().configure();//创建SessionFactory//SessionFactory factory = cfg.buildSessionFactory();//通过Session工厂获取session对象,session对象封装了数据库的JDBC连接Session session = factory.openSession();User user = new User();user.setUsername("张三");user.setPassword("123456");Transaction tx = null;//通过session开启一个事务try {tx = session.beginTransaction();//将user对象的数据保存到数据库,返回值就是主键Serializable userId = session.save(user);System.out.println("userId = " + userId);tx.commit();//提交事务} catch (Exception e) {e.printStackTrace();tx.rollback();//事务回滚} finally {session.close();//关闭sessionfactory.close();//关闭factory}}}

其中生成SessionFactory有两种方法:
方法一:
//代表了配置文件
Configuration cfg = new Configuration().configure();
//创建SessionFactory
//SessionFactory factory = cfg.buildSessionFactory();

方法二:
//代表了配置文件
Configuration cfg = new Configuration().configure();
//将配置信息注册为一个服务
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
SessionFactory factory = cfg.buildSessionFactory(serviceRegistry);

从图1-1可以看出Hibernate的核心组件:
a)Configuration类:用来读取Hiberate配置文件,并生成SessionFactory对象。
b)SessionFactory接口:产生Session实例。
c)Session接口:用来操作PO(持久化对象,Persistent Object)。它有get(),load(),save(),update()和delete()等方法用来对PO进行加载,保存,更新及删除等操作。它是Hibernate的核心接口。
d)Query接口:用来对PO进行查询操作,它可以从Session的createQuery()方法生成。
e)Transaction接口:用来管理Hibernate事务,它主要方法有commit()和rollback(),可以从Session的beginTransaction()方法生成。

0 0