作为SSH三大框架之一的Hibernate,是用来把程序的Dao层和数据库打交道用的,它封装了JDBC的步骤,是我们对数据库的操作更加简单,更加快捷。利用Hibernate框架我们就可以不再编写重复的JDBC代码,不再反复的测试我们的SQL语句写的如何。这里这需要我们简单配置,调用框架给我们提供的方法,就可以完成对数据增删改查的,那么Hibernate到底是个什么样的框架呢?如何使用呢?先看一个关于Hibernate框架的知识体系图:

这篇博客,我们来总结一下,Hibernate宏观的认识和,环境搭建。< http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGJyPgo8L3A+CjxwPiAgICAgICAgICDSu6OsSGliZXJuYXRltb2118rHyrLDtKO/PC9wPgo8cD48YnI+CjwvcD4KPHA+ICAgICAgICAgICAgICAgICAgSGliZXJuYXRlysfSu7j2u/nT2tSqyv2+3bXEx+HBv7y2tcRPUk2/8rzco7o8L3A+CjxwPjxicj4KPC9wPgo8cD4gICAgICAgICAgICAgICAgICAxLNSqyv2+3aOoTWV0YSBEYXRho6k6ZGF0YQogYWJvdXQgZGF0YSjK/b7dtcTK/b7dKaOs0rK+zcrHy7XD6Mr20ru49rbUz/PK/b7do6zP4LWx09rV4rj2ttTP87XEyc/Pws7Eu7e+s6GjPC9wPgo8cD48YnI+CjwvcD4KPHA+ICAgICAgICAgICAgICAgICAgMqOsx+HBv7y2o7rVvNPD18rUtMnZo6zDu9PQx9bI69DUoaOjqMbkyrXO0sjPzqrV4ta7ysfP4LbUtvjR1KOsyOe5+7rNSWJhdGlzz+CxyKOsy/y1vbPJ1tjBv7y2tcTBy6OpoaM8L3A+CjxwPjxicj4KPC9wPgo8cD4gICAgICAgICAgICAgICAgICAzo6xPUk2juqOoT2JqZWN0CiBSZWxhdGlvbiBNYXBwaW5no6m21M/zudjPtcr9vt2/4rXE07PJ5DwvcD4KPHA+ICAgICAgICAgICAgICAgICAgICAg1eLKx0hpYmVybmF0Zb/yvNy1xNbYteOjrNKyvs3Kx8u1vavO0sPHs8zQ8tbQtcTKtczlo6hiZWFuo6zV4sDv0rK90FBPSk+jqbrNyv2+3b/i1tC1xLHtvfjQ0NOzyeSho2phdmHA4NDNus1zcWzA4NDN07PJ5KOsw+bP8rbUz/PJ6LzGus252M+10M3K/b7dv+LJ6LzGtcTTs8nko6y007b4ztLDx9a70OjSqr2ruPy24LXEvqvBprfFtb3Stc7x1tCjrLb4srvKx3NxbMr9vt2/4re9w+ahozwvcD4KPHA+PGJyPgo8L3A+CjxwPiAgICAgICAgICAgICAgICAgNKOsUE9KT6O6o6hQbGFpbiBPcmRpbmFyeQogSmF2YSBPYmplY3SjqSzO3iYjMjY2ODQ7yr21xMbVzahqYXZhttTP86Os0rK+zcrHyc+x38u1tcTKtczlo6y6zcr9vt2/4tf207PJ5LXEvPK1pcDgoaPWu8rH1NrV4sDvzOGz9sHL0ru49tDCtcTD+7TKtvjS0aGjPC9wPgo8cD4gPC9wPgo8cD4gICAgICAgICAgICDX3Lb40dTWrqOsSGliZXJuYXRlvs3Kx72rztLDx7XEyv2+3b/ise26zbPM0PK1xFBPSk/A4L340NDTs8nko6zK/b7dtcSy2df3vfjQ0MHLt+LXsKOsyrnO0sPHsrvTw7DRyv2+3b/ixaq1w7fHs6O+q82oo6zO0sPHu+HD5s/yttTP87Hgs8y+zb/J0tTBy6Os1eLR+bTztPPM4bjfwcvO0sPHtcSx4LPM0KfCyqOstvjH0rbUuPbIy7XE1qrKttKqx/PSsr21tc3By6Gjo6hIaWJlcm5hdGW1xMnovMbEv7XEysfV4tH5tcSjrL/JysfO0r71tcTSqs/ruPy6w7XE06bTw0hpYmVybmF0ZaOsuPy6w7XE1cbO1b+qt6K1xMC0wfrIpcL2o6zV4srH0qrH887Sw8fSqtPQuPy437XExNzBpsHLo6zWqsbkyLvWqsbky/nS1Mi7wcujqTwvcD4KPHA+IDwvcD4KPHA+ICAgICAgICAgICAgtv6jrLu3vrO07r2oo7o8L3A+CjxwPjxicj4KPC9wPgo8cD4gICAgICAgICAgICAgICAgIDGjrLrNx7Cx37y4uPa/8rzctcS087jFwfezzNK70fmjrMrXz8jQ6NKqztLDx7+9yOux2LG4tcRqYXKw/KGjamFysPy1xL+9yOuxvNfF0ru49rm708O8tL/JtcTUrdTyo6zTw8qyw7S/vbG0yrLDtKOstbHIu9PQ0KnI1da+yuSz9qOstaXUqrLiytTKx86qwcu4/LrDtcS527Lsv/K83Lb4v73I67XEsrvKx7HYsbi1xKGj1eLA772ytb3Kx9PDTXlTcWzAtL340NDR3cq+o6zL+dLUyrnTw8HLbXlzcWy1xMf9tq9qYXKw/KO6PC9wPgo8cD4gICAgICAgICAgICAgICAgICAgICAgICAgYW50bHItMi43LjYuamFyICjJ+rPJU1FM0+++5Ck8L3A+CjxwPgphc20uamFyKNfWvdrC69T2x7+5pL7fwOApPC9wPgo8cD4KYzNwMC0wLjkuMS5qYXIoyv2+3dS0way907PY1+m8/ik8L3A+CjxwPgpjZ2xpYi0yLjEuMy5qYXIotPrA7dfpvP6jrLv509q8zLPQtcQpPC9wPgo8cD4KY29tbW9ucy1jb2xsZWN0aW9ucy0yLjEuMS5qYXIovK+6z7mkvt/A4NfpvP6jrLvhvfjQ0Ljf0Ke1xLLZ1/cpPC9wPgo8cD4KY29tbW9ucy1sb2dnaW5nLTEuMC40LmphcijI1da+yuSz9rXE16q7u9fpvP4pPC9wPgo8cD4KbG9nNGotMS4yLjExLmphcijI1da+yuSz9tfpvP6jrLj8vNPP6s+4us2/ydLUv9jWxsrks/YmIzI2Njg0O8q9o6y8sMS/tcS12Ck8L3A+CjxwPgpkb200ai0xLjYuMS5qYXIoWE1MveLO9ik8L3A+CjxwPgplaGNhY2hlLTEuMi4zLmphcii7urTm1+m8/ik8L3A+CjxwPgplamIzLXBlcnNpc3RlbmNlLmphciiz1r7Du6+y2df3tcS55re2amFysPwpPC9wPgo8cD4KaGliZXJuYXRlMy5qYXIov/K83LXEusvQxGphcrD8KTwvcD4KPHA+Cmp0YS5qYXIoyKu+1rXEysLO8bncwO0pPC9wPgo8cD4KanVuaXQtMy44LjEuamFyICAgICAgICAotaXUqrLiytQpICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgo8cD4KbXlzcWwtY29ubmVjdG9yLWphdmEtMy4xLjEzLWJpbi5qYXIgICAgICAgIChNeVNRTMr9vt2/4sf9tq9qYXKw/Ck8L3A+CjxwPiA8L3A+CjxwPiAgICAgICAgICAgICAgICAgMqOs0v3I68Xk1sPOxLz+o7o8L3A+CjxwPiAgICAgICAgICAgICAgICAgICAgICAgIGhpYmVybmF0ZS5jZmcueG1sIApIaWJlcm5hdGW6y9DExeTWw87EvP6jqLD8wKjK/b7dv+K1xMGsvdPF5NbDo6zTs8nkzsS8/rXEtsHIobXIo6k8L3A+CjxwPiAgICAgIGxvZzRqLnByb3BlcnRpZXMgICAgICAgICAgTG9nNGq1xMjV1r7K5LP2v9jWxs7EvP48L3A+CjxwPiAgICAgIFVzZXIuaGJtLnhtbCAg07PJ5M7EvP4o1eLA77XEVXNlcta7ysfGpcXkVXNlcsq1zOW1xKOs0ru49sq1zOXA4LbU06bSu7j2tMvA4LXE07PJ5M7EvP6hoyk8L3A+CjxwIGxhbmc9"en-US">
3,核心配置文件hibernate.cfg.xml的编写:
jdbc: mysql://localhost:3306/example useUnicode=true&characterEncoding=utf8 com.mysql.jdbc.Driver ljh ljh true true org.hibernate.dialect.MySQLDialect
4, *.hbm.xml与实体类对应的用来做映射的文件的编写,我觉的这里是重点,设计的知识点比较多。这里简单看一个,后边会总结这里边的语法:
5,上边已经做好了实体类和数据表的映射了,我们可以通过Hibernate框架提供的方法进行对数据库的数据操作了,简单看一个dao层类的实现:
public void insert(User user) {
//加载配置文件:classpath:hibernate.cfg.xml
Configuration config = new Configuration().configure();
//创建连接工厂
SessionFactory sf = config.buildSessionFactory();
//会话对象,表示与数据库的连接会话过程,相当于jdbc的connection连接对象
Session session = null;
Transaction tx = null ;
try {
//获取会话对象
session = sf.openSession();
//打开事务:Hibernate默认数据操作是不提交事务的,所以我们要手动提交事务。
tx = session.beginTransaction();
//保存对象,持久化操作
session.save(user);
//提交事务
tx.commit();
} catch (Exception e) {
e.printStackTrace();
//事务回滚
tx.rollback();
} finally{
//连接会话关闭
if(session!=null){
session.close();
}
}
}
这样一看我们的方法写的代码也是挺多了,想说的是这里只是写出了Hibernate框架是从创建sessionFactory对象,然后创建session对象,通过session对象进行对数据库的操作。其实真正的开发中,我们会把这些对象,事务的操作交给框架来管理,我们需要做的就是持久化操作的那些代码,是非常少的。
综上为Hibernate实现一个简单插入user数据的例子,当然如果数据库关系复杂了,或者更多的设置,后边会进行相关总结。最后来看看Hibernate框架的优缺点吧,当然这些优缺点都是相对而言呢,看用在什么环境下了!
优点:1,轻量级的ORM框架
2,对JDBC进行了很好的封装,使用了ORM做了映射,那么就可以通过面向对象的方式很容易的操作数据库了。
3,它还提供了缓存机制,可以提高效率。等
缺点:1,如果对大量的数据进行频繁的操作,性能效率比较低,不如直接使用JDBC。
总而言之对于框架,我们利用其优秀的一面,避开其不好的一面,使其对我们开发发挥最大的作用即可!!!