HIBERNATE学习(一)

Hibernate
开源的O/R 映射框架

主要能做O(对象模型)和R(关系模型)的映射。当然这主要是它的一部分功能,一个O/R MAPING框架包括很多东西,HQL(Hibernate Query Language)hibernate自己的面向对象的查询语言,它还提供了很多缓存机制,比如:一级缓存、二级缓存、查询缓存等等。
一个O/R框架的实现是非常复杂的。那么为什么会出现这种框架呢?我们用JAVA做数据库开发的时候,我们都使用JDBC(JAVA DATABASE CONNECTION)操作数据库中,我们会发现有很多步骤都重复了,这样的话会使我们的工作效率降低,另一方面我们的开发没有面向对象化,JAVA是面向对象的,我们建立了好久对象、类、对象之间的关系。而数据库操作这里却是面向关系的。为了更对象化才出现了类似的工具。还有移植性上,随然SQL是标准的,但是很多数据库厂商对SQL进行了扩展,以前我们通常的作法,是采用DAO模式,然后采用不同的SQL来实现DAO,这样来在不同数据库进行移植。采用HIBERNATE,它的移植性会更好的,首先它的查询是面向对象的,还有它支持方言(dialect)。还有一个最重要的问题,面向对象的数据库使用还不是广泛。如果使用广泛了,这种框架就没有意义了,因为面向对象的数据库,我们操作的都是对象。也就是说对象模型也关系模型之间有阻抗不匹配,最经典的就是在对象模型中是有继承的概念,而在关系模型中的是没有继承的概念的,HIBERNATE把这些都给屏蔽了,你只要针对面向对象的开发就行了。
还有最重要的一个特性,HIBERNATE框架没有侵入性,所以HIBERNATE是一个轻量级的框架。

HIBERNATE可以访问JNDI、JDBC、JTA:如果服务器配置了JNDI数据源,HIBERNATE就可以通过JNDI访问数据库。JDBC是本地事务。JTA通常实现两阶段提交协议,可以跨资源保障事务,也称全局事务。本地事务只能针对单一数据库启作用。而JTA可以针对不事数据库提供统一事务。

HIBERNATE基本对象:

Configuration对象:主要读取HIBERNATE配置文件。
SessionFactory对象:重量级对象,创建须要时间,对应缓存机制,和二级缓存绑定,并且是线程安全的。
Session对象:是非线程的,通常一个业务逻辑对应一个Session对象,用完了就要关闭的。
Transaction对象:完成事务的,HIBERNATE默认情况下事务不是自动提交的。
Query对象:支持HQL查询。


HIBERNATE的持久化对象的生命周期:
对象有三种状态:
Transient 瞬时的
Persistent 持久的
Detached 离线的

当new一个实体类的时候它就是瞬时对象,主要是看在数据库中没有和之对应的记录。

当把Transient状态的对象保存到数据库中,就叫Persistent

当清空session了,数据库中有的对象叫Detached

Session的get和load都按主键加载的,get是不支持lazy,load是支持lazy。
Lazy: 只有正真使用对象的时候才加载。延迟加载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值