Hibernate是(1)中间件,介于应用程序和数据库的软件
(2)持久化工具,封装了和数据库访问的细节,可以让程序开发人员更加关注于业务逻辑的处理
(3)ORM工具,将面向对象的java同关系型数据库进行映射,可以实现内存中的数据和数据库中的数据双向同步更新
1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作
3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
hibernate是如何查询数据库的.
1)先是创建pojo类(javaBean) (2)再是创建映射文件(.hbm.xml) (3)创建配置文件(hibernate.hbm.xml) (4)最后调用Hibernate API对数据库进行CRUD操作.
hibernate
工作原理:
1. 读取并解析配置文件
2. 读取并解析映射信息,创建SessionFactory
3. 打开Sesssion
4. 创建事务Transation
5. 持久化操作
6. 提交事务
7. 关闭Session
8. 关闭SesstionFactory
工作流程:
(1)先是创建pojo类(javaBean)
(2)再是创建映射文件(.hbm.xml)
(3)创建配置文件(hibernate.hbm.xml)
(4)最后调用Hibernate API对数据库进行CRUD操作.
hibernate的5个核心类或接口:
(1)configuration:用于解析hibernate.cfg.xml文件和xxxxx.hbm.xml文件,并创建sessionfactory对象。configuration对象用于配置并且启动hibernate。hibernate应用通过configuration实例来指定对象--关系映射文件的位置或者动态配置hibernate的属性,然后创建sessionfactory实例。
(2)sessionfactory:初始化hibernate,充当数据存储源的代理,创建session对象。一个sessinfactory实例对应一个数据存储源,应用从sessionfactory中获得session实例。如果应用同时访问多个db,怎需要为每个数据库创建一个单独的sessionfactory实例。
(3)session:也被称为持久化管理器,对象级数据库操作。
特点:
1)不是线程安全的,因此在设计软件架构时,应该避免多个线程共享同一个session实例。
2)session实例是轻量级的,所谓轻量级,是指它的创建和销毁不需要消耗太多的资源。这意味着在程序中可以经常创建或销毁session对象,例如为每个客户请求分配单独的session实例,或者为每个工作单位分配单独的session实例。
3)通常将每一个session实例和一个db事务邦定,也就是说,每执行一个db事务,都应该先创建一个新的session实例,不论事务执行成功与否,最后都应该调用session的close()方法,从而释放session实例占用的资源。
注:每个session实例都有自己的缓存,这个session实例的缓存只能被当前的工作单元访问。
(4)query:执行数据库查询操作。要使用hql(hibernatequerylanguage)查询语句,hql查询语句是面向对象的,它引用类名及类的属性名。
(5)transaction:用于管理操作事务。它对底层的事务接口做了封装,底层事务接口包括:jdbc api、jta(javatransactionapi)、corba(commonobjectrequestbroker architecture)api。
3.hibernate的5个核心类或接口:
(1)configuration:用于解析hibernate.cfg.xml文件和xxxxx.hbm.xml文件,并创建sessionfactory对象。configuration对象用于配置并且启动hibernate。hibernate应用通过configuration实例来指定对象--关系映射文件的位置或者动态配置hibernate的属性,然后创建sessionfactory实例。
(2)sessionfactory:初始化hibernate,充当数据存储源的代理,创建session对象。一个sessinfactory实例对应一个数据存储源,应用从sessionfactory中获得session实例。如果应用同时访问多个db,怎需要为每个数据库创建一个单独的sessionfactory实例。
(3)session:也被称为持久化管理器,对象级数据库操作。
特点:
1)不是线程安全的,因此在设计软件架构时,应该避免多个线程共享同一个session实例。
2)session实例是轻量级的,所谓轻量级,是指它的创建和销毁不需要消耗太多的资源。这意味着在程序中可以经常创建或销毁session对象,例如为每个客户请求分配单独的session实例,或者为每个工作单位分配单独的session实例。
3)通常将每一个session实例和一个db事务邦定,也就是说,每执行一个db事务,都应该先创建一个新的session实例,不论事务执行成功与否,最后都应该调用session的close()方法,从而释放session实例占用的资源。
注:每个session实例都有自己的缓存,这个session实例的缓存只能被当前的工作单元访问。
(4)query:执行数据库查询操作。要使用hql(hibernatequerylanguage)查询语句,hql查询语句是面向对象的,它引用类名及类的属性名。
(5)transaction:用于管理操作事务。它对底层的事务接口做了封装,底层事务接口包括:jdbc api、jta(javatransactionapi)、corba(commonobjectrequestbroker architecture)api。
二、工作原理
1.hibernate 的初始化.
读取hibernate 的配置信息-〉创建session factory
1)创建configeration类的实例。
它的构造方法:将配置信息(hibernate config.xml)读入到内存。
一个configeration 实例代表hibernate 所有java类到sql数据库映射的集合。
2)创建sessionfactory实例
把configeration 对象中的所有配置信息拷贝到sessionfactory的缓存中。
sessionfactory的实例代表一个数据库存储员源,创建后不再与configeration 对象关联。
缓存(cache):指java对象的属性(通常是一些集合类型的属性--占用内存空间。
sessionfactory的缓存中:hibernate 配置信息。or映射元数据。
缓存-大:重量级对象 小:轻量级对象
3)调用sessionfactory创建session的方法
1】用户自行提供jdbc连接。
connection con=datasource.getconnection();
session s=sessionfactory.opensession(con);
2】让sessionfactory提供连接
session s=sessionfactory.opensession();
4)通过session 接口提供的各种方法来操纵数据库访问。
用户登录
还没有账号?立即注册
用户注册
投稿取消
| 文章分类: |
|
还能输入300字
上传中....
哈哈哈哈哈士奇