Hibernate API解析
来源:互联网 发布:旅游网站源码 编辑:程序博客网 时间:2024/05/29 14:17
一.Configuration
1.Configuration类管理Hibernate的配置信息,包括如下内容:
1> hibernate.cfg.xml文件。该文件包含Hibernate运行的底层信息:JDBC驱动类、数据库的URL、用户名、密码、方言、数据库连接池等。
2> *.hbm.xml文件,即持久化类与数据表的映射关系。
2.创建Configuration对象
方式一:属性文件(hibernate.properties)
Configuration cfg = new Configuration();
方式二:XML文件(hibernate.cfg.xml)
1)加载默认的配置文件
Configuration cfg = new Configuration().configure();
2)或者加载指定的配置文件
Configuration cfg = new Configuration().configure("myhibernate.cfg.xml");
二.ServiceRegistry
1.ServiceRegistry是Service的注册表,为Service提供一个统一的加载、初始化、存放、获取机制。
2.ServiceRegistry代理结构:先从本级节点查找,找不到再去父节点查找。
3.ServiceRegistry的组成:
1> BootstrapServiceRegistry
主要提供Classloading和Service loading服务,供全局使用。
2> ServiceRegistry
标准的ServiceRegistry,亦服务于全局,当初始化ServiceRegistry时,可能会使用到BootstrapServiceRegistry中的服务。
3> SessionFactoryServiceRegistry
与SessionFactory相关联(一对一的关系), 这里面的Services在初始化的时候需要访问SessionFactory。
所以, BootstrapServiceRegistry 中主要包括全局都要使用的基础服务, 而 ServiceRegistry 主要包括在 BootstrapServiceRegistry 之上的, 和Hibernate 相关的服务, 例如配置文件解析, JDBC, JNDI 等。
而SessionFactoryServiceRegistry 则是和sessionfactory相关的了, 包括2LC的regionfactory, event listener等。
这里面的层级关系, 对于 service registry的client来说是完全透明的, 可以直接调用getService 去获取需要的service, 而不用去关心在哪个层级上, 如同 classloader.
核心代码:
//加载默认的配置文件
Configuration cfg = new Configuration().configure();
//创建注册服务对象
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
三.SessionFactory
1.SessionFactory对象是由Configuration对象根据当前的配置信息生成的。
SessionFactory对象构造完毕,即被赋予特定的配置信息,包括:保存当前的数据库配置信息、所有映射关系、预定义SQL语句、维护Hibernate的二级缓存。
如下示例代码:
//创建Configuration对象
Configuration cfg = new Configuration().configure();
//创建注册服务对象
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
//创建SessionFactory对象
SessionFactory sessionFactory = cfg.buildSessionFactory(serviceRegistry);
2.SessionFactory是生成Session的工厂
Session session = sessionFactory.openSession();
3.构造SessionFactory非常消耗资源,故一个应用程序只初始化一个SessionFactory对象。
四.Session
1.Session是应用程序与数据库之间交互操作的一个单线程对象,是Hibernate运作中心,所有持久化对象必须在session的管理下才可进行持久化操作。
Session中有一个缓存,在显示执行flush()之前,所有的持久化层操作的数据都缓存在session对象中。
2.持久化类与Session关联后就具有持久化的能力
3.Session类的常用方法:
1> 取得持久化对象的方法:get()、load()
2> 持久化对象都需保存、更新和删除:save()、update()、saveOrUpdate()、delete()
3> 开启事务:beginTransaction()
4> 管理Session的方法:isOpen()、flush()、clear()、evict()、close()
五.Transaction
1.Transaction代表一次原子操作,具有数据库事务的概念。所有的持久层都应该在事务管理下进行。
Transaction transaction = session.beginTransaction();
2.常用方法:
commit():提交相关联的session实例
rollback():撤销事务操作
wasCommitted():检查事务是否提交
- Hibernate API解析
- Hibernate Api
- hibernate API
- 【Hibernate】 Api
- Hibernate API
- hibernate-api
- hibernate学习之Hibernate API
- Hibernate api 主要接口
- Hibernate Session Api
- Hibernate API 变化
- Hibernate核心API(理解)
- Hibernate API 简介
- Hibernate的在线API
- Hibernate API 介绍
- Hibernate HQL 查询API
- Hibernate核心API
- Hibernate API 简介
- Hibernate关键API详解
- sql常见问题
- Cron表达式
- html中各个标签的默认样式汇总
- BUG解决 —— error: can't exec 'codesign' (No such file or directory)
- EASY_PAT_ZJU_ADVANCED LEVEL 1015 进制转换 素数
- Hibernate API解析
- css display:inline-block兼容ie6及火狐
- discuz 添加具有管理员权限的用户
- OUTCAD中视口与视图区别
- ios学习:UINavigationController导航
- Useful webs
- 设置路由器无线上网
- HashMap的使用简介
- JAVA的solr操作实现(基本操作)