Hibernate-初次见面

与君初相识,犹如故人归.

第一次和你相见,仿佛就如梦中相爱多年的你来到我身边。想象着,这是一种多么美好的际遇?当然,在我们技术领域中,有时候我们也能找到这种感觉。有那么一段时间,你为了系统上某个业务实现,苦苦思索,“百思不得骑姐”,突然某个朋友无意间向你推荐某个关键词。你迫不及待的输入它,然后enter,出来的结果正好是你需要的。

这里,我将尝试概而全的认识Hibernate的架构设计。

(图1)

(图2)

仔细看Hibernate已经在你的应用和数据库之间发挥桥梁作用。

关注下面图2。我们清楚地看到,Hibernate框架本身是基于JTA,JDBC,JNDI这些API规范之上做的实现。换个角度来思考,如果没有Hibernate,我们写代码是不是得直面JDBC这块雷区?曾几何时,农民干农活,还得亲自掏粪,后来有了各种自动化机器,不是好多了么?Hibernate为了让我们不直接接触JDBC,它想了一套替代方案给开发人员使用。对!就是Configuration、SessionFactory、Session、Transaction、Query、Criteria这些API。别怕,不是全给我们开发用的。开发人员需要接触的API少之又少。正因为对开发人员学习成本很低,带来好处不少,正是它火的理由吧。

下面篇幅就简单介绍一下Hibernate 祭出的神器

  1. Configuration  这个对象是我们在任何hibernate应用都需要创建的一个对象,在应用生命周期中,它只被创建一次。它代表了Hibernate所能进行修改的配置入口(hibernate.properties or hibernate.cfg.xml)。它负责数据库连接类映射设置

  2. SessionFactory  关于sessionfactory,我一定要不惜笔墨着重多写几句。Configuration使用hibernate.properties或hibernate.cfg.xml 来创建sessionfactory。sessionfactory是一个线程安全的对象,应用内的线程都可使用。怎么去理解线程安全这件事情呢?用大腿想其实都能明白。只能线程安全啊。如果sessionfactory给不同的线程同时返回同一个session对象,那真是世界末日了!说不定数据库数据瞬间就死锁,数据瞬间就乱套。sessionfactory是一个重量级对象,通常来说,它也是在应用启动的时候创建,并留作稍候使用。一般地,每一个数据库都有一个单独的hibernate.cfg.xml并且生成一个sessionfactory。所以,当我们的应用需要连接多个数据库的时候,我们的应用就有多个sessionfactory,多个hibernate.cfg.xml。 非常合理对么!

  3. Transaction   大多的RBDMS都支持事务操作。以前旧版本的Mysql,myisam引擎就不支持事务操作。最新的版本,已经把myisam引擎直接删除了。Hibernate的事务对象是可选的。意思是,你可以使用hibernate 事务对象来实现事务操作,也可以由我们的应用程序自己来控制事务。

  4. Query   老实说,和Criteria相比,我还挺喜欢这个旧情人。能依稀找到SQL的影子。参数设置,命名参数绑定,结果集限制都还是那个味道。能SQL,也能写HQL。

  5. Criteria  这个就真是完完全全,彻彻底底的用OO的思想来操作数据了。CRUD没有一点SQL的样子。 Query 和 Criteria 之间必有一战。只不过是发生在某些开发人员口中罢了。

与hibernate的初次见面先到这,简单的交流几句,留点念想,日后再说!

 

The next chapter will be ? 

 

转载于:https://my.oschina.net/zhouhaojie/blog/818802

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值