java框架——经典的Hibernate

在编程开发中,我们有很多框架,他们有些很方便,也很实用,今天我们一起来认识一个java经典的框架Hibernate,Hibernate英文名称为“冬眠”,这是个很有意思的技术,同样这个名字也很巧妙!大家先看看这个技术的书籍在国外的封面:

简介:

大家知道冬眠的动物是静止的,在冻僵的边缘,而Hibernate的一个巨大作用就是对数据持久化的实现,这两者有什么联系?

简单介绍数据持久化:

数据持久化是解决程序与数据库之间交互访问的问题,使程序不直接访问数据库,而是直接访问Session会话,然后由Session会话与数据库“打交道”。只要确保,程序每次访问Session中的数据时,与数据库中的数据保持一致,就不会出现错误。

而冬眠的功效就会由这个Session会话体现,我们的程序不直接面对数据库,延迟(冬眠)到Session会话,我们可以将Session会话理解为缓存!

你好奇吗?这个实现是怎么完成的呢?

我们先宏观上看看他的神秘面纱:

而我们看看采用ORM之后的好处和缺点

优点:

1,提高生产力——轻松开发

2,更加对象化——消除关系领域——阻抗不匹配

3,可移植性——请

4,没有侵入性——测试简单,支持透明持久化

缺点:

1,数据库特性语句——难调优

2,对大批量数据更新有问题

3,系统中存在大量统计查询——混合应用

而在此,Hibernate对我们最大的帮助就是使我们采用对象化思维操作关系型数据库!

思考:

这是新技术吗?

这不是新技术,只是某个人对这个技术的实现做得比较完善,适合大部分的开发人员,在时间的作用力下,逐步推广,Hibernate就貌似是个独立的技术,其实我们在VB的阶段就接触过这类的思想,我们在VB编写某机房收银系统时,在一个特殊的模块封装了对数据库的系列操作,包括获取ODBC连接,释放连接等,这时我们已经对数据库的操作做了一个简单的封装。

到了C#阶段,我们个人重构和合作开发期间,我们不仅仅做到了VB对数据库连接的封装,我们对表的操作也做了一系列的封装,大家看看这个类图:

对比:

而在Hibernate中,我们看看他的结构:

我们发现,在学习Hibernate时,这项技术,是我们想对象化操作数据库,而不用考虑具体结构的一个很好实现,我们以前的自己实现的可以说是Hibernate的一个雏形,而在Hibernate中,除了这些,还有一个不错的技术体现了他冬眠的另一层含义:

延迟加载

这种初始化策略只在一个对象调用它的一对多或多对多关系时才将关系对象读取出来。这个过程对开发者来说是透明的,而且只进行了很少的数据库操作请求,因此会得到比较明显的性能提升。

自己理解:

他的这种技术,是将数据库的封装好的关系在使用对象调用时,延迟加载,只有我调用了这个关系,我才会加载关系附属的那些对象,这样,如果我们只使用一个对象,就不会调用关系映射给他的对象!

生活中的映射:

这些技术在生活中的有应用吗?这必然是有应用的,也许你想不到,我们天天在用!

一个最简单的例子,开会,我们在生活中,每个小区都会有居委会,每个城区都会有区级管理机构,国家开会,会有各级人大代表,而这些机制就是我们延迟加载的一个映射,比如A县城下有B,C,D三个城区,市里布置任务,A县代表去开会,带着B.C.D三个城区的代表,市里有任务是对A说的,除非具体到某个城区,否则BCD就不用出现,而一旦有具体任务,具体到某个区,只要临时叫到会议室就OK了!

总结:

Hibernate,这首先是个单词,在生活中有它实际的含义,然后才是某项技术的名字或者叫代号,而这两者必然有着千丝万缕的联系,而他的由来也必然有一个巧妙的故事,我们不识Hibernate是应为以为他是新技术,我们认识Hibernate,是学过后觉得他不识新技术,我们使用Hibernate是因为他较好地解决了我们的难题!

总之,这个技术的兴起,不是因为太新颖,而是我们太熟悉,太渴望!

java框架——经典的Hibernate

时间: 2024-10-01 19:48:14

java框架——经典的Hibernate的相关文章

java必备——经典的Hibernate

在编程开发中,我们有非常多框架,他们有些非常方便,也非常有用,今天我们一起来认识一个java经典的框架Hibernate,Hibernate英文名称为"冬眠".这是个非常有意思的技术,相同这个名字也非常巧妙! 大家先看看这个技术的书籍在国外的封面: 简单介绍: 大家知道冬眠的动物是精巧的,在冻僵的边缘,而Hibernate的一个巨大作用就是对数据持久化的实现.这两者有什么联系? 简介数据持久化: 数据持久化是解决程序与数据库之间交互訪问的问题,使程序不直接訪问数据库,而是直接訪问Ses

java框架篇---spring hibernate整合

在会使用hibernate 和spring框架后 两个框架的整合就变的相当容易了, 为什么要整合Hibernate?1.使用Spring的IOC功能管理SessionFactory对象 LocalSessionFactoryBean2.使用Spring管理Session对象  HibernateTemplate3.使用Spring的功能实现声明式的事务管理 第一步:搭建hibernate环境(包括引入hibernate的jar,包配置数据源,建立类和表的映射),为什么这么做.我觉得hiberna

java框架篇---hibernate入门

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任. 流程图: 核心接口 Hibernate的核心接口一共有6个,分别为:Session.SessionFa

对java框架的几点认识

java框架实在是太多了,网上一抄一大段,根本就了解不到什么.我还是以我的经验来说一下j2ee的框架.1.首先力推struts2框架,这是最经典的框架(可以说没有“之一”).可以帮你快速搭建出一个MVC模型出来.(注:struts1已经很少用了,且问题也很多,强烈推荐使用struts2).2.Spring框架,这是排行第二的框架(我个人排得,非权威),这个框架出彩的地方就在于它的“依赖注入”和“控制反转”.简单的说,就是在程序运行的时候才将参数注入到容器里.3.持久层框架选Hibernate和I

java 框架 面试 2

1.谈谈你对Struts的理解. 答: 1. struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类.我们可以在web.xml文件中将符合某种特征的所有请求交给这个Servlet处理,这个Servlet再参照一个配置文件(通常为/WEB-INF/struts-config.xml)将各个请求分别分配给不同的action去处理. 一个扩展知识点:struts的配置文件可以有多个,可

Hibernate常见错误:java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibe

hibernate4 与 spring3有点冲突 http://blog.csdn.net/gyflyx/article/details/7632645 整合NoSuchMethodError错误 and 升级Spring3.1RC2 和Hibernate4.0.0CR7遇到的一些问题及解决 2012-02-20 10:33:28|  分类: 编程_SSH |字号 订阅 我使用的是hibernate4和spring3,然后报的错误是 java.lang.NoSuchMethodError: or

Java框架服务

Java从诞生到现在,一路飙升,可以说红遍全球,红到发紫.随着Java的流行,促生了许多java框架:Spring.WebWork.Struts.HIbernate.JDiy.JFinal.Quartz.Welocity.IBATIS.Compiere ERP&CRM Spring Framework[Java开源J2EE框架] Spring是一个解决了许多在J2EE开发中常见的问题的强大框架.Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯.Spring

dwr 框架 ,实现 ajax 的java 框架

1. 引入 dwr.jar 包 2. 配置web.xml 文件 ,拦截请求 <servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <init-param> <param-name>debug</param-name> &l

Java框架JNA调用C方法(windows链接库dll文件、linux链接库so文件)

介绍 给大家介绍一个最新的访问本机代码的Java框架-JNA. JNA(Java Native Access)框架是一个开源的Java框架,是SUN公司主导开发的,建立在经典的JNI的基础之上的一个框架. JNA项目地址:https://jna.dev.java.net/ 非常强大.易用,功能上类似与.NET的P/Invoke. 不堪回首的JNI 我们知道,使用JNI调用.dll/.so共享类库是非常非常麻烦和痛苦的. 如果有一个现有的.dll/.so文件,如果使用JNI技术调用,我们首先需要另