Hibernate运行过程

xiaoxiao2021-02-28  161

扫盲:----------------------------------------------------------------------------------- 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();//关闭session factory.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()方法生成。

转载请注明原文地址: https://www.6miu.com/read-17760.html

最新回复(0)