MVC一探究竟之Hibernate原理与实践
来源:互联网 发布:淘宝客服话术范文 编辑:程序博客网 时间:2024/05/22 06:47
在上篇博客之中,笔者详细介绍了MVC中Struts2原理的相关知识。接下来。笔者依然会在介绍原理的同时结合项目实际,深入浅出的给予MVC中hibernate的相关介绍。
在给项目配置好hibernate后,会有三个文件,即它的pojo包(hibernate reverse engineering反向工程构建),HibernateSessionFactory类以及hibernate.cfg.xml文件。
hibernate调用代码:
Transaction TX = HibernateSessionFactory.getSession().beginTransaction();//事物开启
List<Sys表> TB= HibernateSessionFactory.getSession().createQuery("from Sys表").list();
hibernate原理如下图:
1:configuration config = new configuration.congigure()//加载解析hibernate.cfg.xml文件。
它的执行过程是Transaction TX =HibernateSessionFactory.getSession().beginTransaction(),在HibernateSessionFactory类中会有一个“静态代码块”,加载HibernateSessionFactory类时会执行一次这个静态代码块,config对象的创建就在这个代码块出。(静态这个东西还是挺好用的!)
2:hibernate.cfg.xml加载数据库并通过<mapping resource="com/xx/User.hbm.xml"/>读取并解析映射信息。(对的,就是pojo包里的xxx.hbm.xml文件)
3:ORM(对象关系映射)机制将数据库表加载成一个个对象。(你就可以通过操作对象去操作数据库了)
4:创建Sessionfactory(会话工厂),并打开session,进行持久化。(没错,还是这句Transaction TX = HibernateSessionFactory.getSession().beginTransaction())
5:开启事物beginTransaction()。
6:操作对象,操作数据。
7:依次关闭事物,Session,Sessionfactory。
Hibernate作为持久化层,不仅实现的持久化,它的对象关联关系映射的轻量型框架更是让我们以对象的方式去操作数据库,好处不言而喻。(java核心:世间万物一切都为对象)
参考资料详见:http://blog.csdn.net/jiuqiyuliang/article/details/39078749/
https://my.oschina.net/u/1453975/blog/331913
Hibernate反射机制的实现:(此处转载)
CGLIB(code generationlibary)是数据持久层编程框架Hibernate中用到的一种反射机制,它不同于java中的反射机制,是一种更灵活,封装的更好的一种反射机制。
CGLIB的底层实现是依赖于ASM技术的,ASM技术虽然可以在程序运行过程中对类的字节码进行更改,但对于那些对JVM规范不是非常熟悉,精通,对java文件编译后的字节码代表的意义不是很了解的程序员是很难准确应用的,换句话说,就是对应用接口的封装没用从应用的角度来考虑,增加了应用框架的复杂性。CGLIB是在ASM的基础上,提供了更加友好的接口,嵌入到程序中更加方便。
CGLIB技术比java中的反射技术性能更优秀。java中的反射机制只能在程序运行期间动态实现java中的接口。CGLIB不仅可以动态实现接口,还可以实现类,可以对类的方法进行屏蔽,修改。这也是CGLIB中最突出的特点。
代理,反射和元数据是java的三大重要特征。在配合ASM和CGLIB的出色的反射技术,设计出一个优秀的应用框架就只需要看看你的想象力有多丰富了。
如有错误,还望指正!
- MVC一探究竟之Hibernate原理与实践
- 一探究竟之PullZoomView
- 一探究竟“后代选择器与子选择器的区别”
- FromHandle临时对象一探究竟
- Expedition 10.1是什么东东? 一探究竟
- Android Support 包一探究竟
- 一探究竟之JavaScript中===和==区别
- 一探究竟之JavaScript===和==区别2
- MVC与单元测试实践之健身网站(一)-项目概述
- 探究javascript mvc(一)
- OpenLayers 3实践与原理探究1-ol2 VS ol3
- 《Linux命令、编辑器与Shell编程》读书笔记1-linux系统入门命令(跟风到底,一探究竟)
- js函数形参、实参、arguments[]的一探究竟
- 当我想深入遗留代码一探究竟的时候
- [py]python面向对象__str__一探究竟
- Hibernate缓存原理与查询缓存的组合探究
- Hibernate原理与应用(一)
- Struts原理与实践(一)
- 递归实现二叉树的三种遍历
- JavaScript 数组详解
- Eclipse—创建JavaWeb工程与Servlet
- android面试
- Best Time to Buy and Sell Stock III
- MVC一探究竟之Hibernate原理与实践
- struts常用配置
- mysql数据库的PDO连接方式
- 开启博客的新论点——建筑行业如何应用BIM的系列文章
- Oracle PL/SQL编程(1)
- 网络请求框架----HttpClient的get,post和图片上传服务器
- 数据库Sharding的基本思想和切分策略
- 下面关于ICMP协议的描述中,正确的是()----腾讯2016研发工程师笔试题
- 查找算法-稠密索引、分块索引、倒排索引