Hibernate介绍及Hibernate4新特性
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4、事务,hibernateTemplate
• hibernate4已经完全可以实现事务了 与 spring3.1中的 hibernatedao,hibernateTemplete等有冲突, 所以spring3.1里已经不提供 hibernatedaosupport,hibernateTemplete
– a、每个客户端/租户使用不同的数据库与/或模式 – b、所有客户端使用相同的数据库/模式,但所有表中都 有一个附加的列(比如说tenant_id),用于过滤数据
2、引入了“Services”API
• Hibernate中新增的另一个重要特性就是 “Services”API规范。除了标准的内建服 务外,你还可以通过该API以其他几种方式 扩展 Hibernate。现在已经有了几种方式可 以插入到Hibernate内核中,但Service API 则提供了一种标准方式来实现这一点。
3、提供了更棒的日志,支持i18n与 消息编码(通过JBoss Logging而非 slf4j)
4、清理并删除了几处废弃代码
一个框架的升级,不仅要对自身有一个质 的提升,更要对自身有一个检查,这样才 能更好的让用户使用。
2、hibernate定义
• Hibernate是一种Java语言下的对象关系映 射解决方案。 它是一种自由、开源的软件。 它用来把对象模型表示的对象映射到基于 SQL 的关系模型结构中去,为面向对象的 领域模型到传统的关系型数据库的映射, 提供了一个使用方便的框架。
3、hibernate作用
• Hibernate 不仅管理Java 类到数据库表的 映射(包括从Java数据类型到SQL数据类 型的映射),还提供数据查询和获取数据 的方法,可以大幅度减少开发时人工使用 SQL 和JDBC 处理数据的时间。 • 它的设计目标是将软件开发人员从大量相 同的数据持久层相关编程工作中解放出来。 无论是从设计草案还是从一个遗留数据库 开始,开发人员都可以采用Hibernate。
2、buildSessionFactory
• 4.1版本中buildSessionFactory()已经被 buildSessionFactory(ServiceRegistry ServiceRegistry)取 代 解决办法: Configuration cfg = new Configuration(); ServiceRegistry serviceRegistry =new ServiceRegistryBuilder().applySettings(cfg.getProperties ()).buildServiceRegistry(); SessionFactory sf = cfg.configure().buildSessionFactory(serviceRegistry);
5、hibernate API简介
• a、hibernate API中的接口可以分为一下几 类:
– (1)提供访问数据库的操作的接口,包括 session、Transaction、Query接口; – (2)用于配置Hibernate的接口,Configuration; – (3) 间接接口,使应用程序接受Hibernate内部 发生的事件,并作出相关的回应,包括: Interceptor、Lifecycle、Validatable; – (4)用于扩展Hibernate功能的接口,如 UserType、CompositeUserType、 IdentifierGenerator接口。
5、自动建表
• Hibernate4.1已经可以自动建表,所以开发 时只需要自己开发类然后配置好就OK。不 需要考虑怎么建表(并未测试)
hibernate新特性
• 这里我们来看一下内部的一些新特性,功 能的扩展和优化
– 1多租户架构支持 – 2引入了“Services”API – 3提供了更棒的日志,支持i18n与消息编码(通 过JBoss Logging而非slf4j) – 4清理并删除了几处废弃代码
1、多租户构架支持
• 所谓多租户架构,就是将大型的企业应用划分为 虚拟的多个客户端/客户(又叫做租户)而不必将 所有数据放在一个共享空间中。该原则改进了管 理、监控, 甚至是安全,对于大型的服务提供商 来说非常有帮助。提供云基础设施的公司也会从 多租户架构中获益颇丰。该原则有几种实现方式, 列举如下:
• 在日志中加入对i18n的支持。 • JBoss Logging是唯一一个完整支持i18n(包括参 数化)的日志库. • JBoss Logging还包含了对消息键的内建支持,它 将消息键作为独立的概念而非ResourceBundle中 的键,以此来实现i18n。这是个不可改变的 键, 与导致日志消息的情况相关联。这个概念非常适 合于围绕着这些键来构建FAQ和文档。 • 对于充斥了很多日志的大型项目来说,你真的要 能够确保这些键是唯一且一 致的。
• b、缺点
– Hibernate限制您所使用的对象模型。例如,一 个持久性类不能映射到多个表。
hibernate新特性
• hibernate4中的新特性,这里我先从代码上 来区分一下它与hibernate3的一些改变,分 别有:
– 1、数据库方言的设置 – Biblioteka Baidu、buildSessionFactory – 3、annotation – 4、事务,hibernateTemplate – 5、自动建表
5、hibernate API简介
6、hibernate的优缺点
• a、优点
– (1)Hibernate 使用 Java 反射机制 而不是字节 码增强程序来实现透明性。 – (2)Hibernate 的性能非常好,因为它是个轻量 级框架。映射的灵活性很出色。 – (3)它支持各种关系数据库,从一对一到多对多 的各种复杂关系。
– 持久层(Persistence Layer),即专注于实现数据持久化 应用领域的某个特定系统的一个逻辑层面,将数据使用者 和数据实体相关联。
1、历史与背景
• (3)为什么要持久化?增加持久层的作用是什么?
– 数据库的读写是一个很耗费时间和资源的操作,当大量用 户同时直接访问数据库的时候,效率将非常低,如果将数 据持久化就不需要每次从数据库读取数据,直接在内存中 对数据进行操作,这样就节约了数据库资源,而且加快了 系统的反映速度。增加持久化层提高了开发的效率,使软 件的体系结构更加清晰,在代码编写和系统维护方面变得 更容易。特别是在大型的应用里边,会更有利。同时,持 久化层作为单独的一层,人们可以为这一层独立的开发一 个软件包,让其实现将各种应用数据的持久化,并为上层 提供服务。从而使得各个企业里做应用开发的开发人员, 不必再来做数据持久化的底层实现工作,而是可以直接调 用持久化层提供的API。
1、历史与背景
• (4)目前持久化领域,实现模式有以下几种:
– – – – – A B C D E 业务逻辑和数据访问耦合 主动域对象模式 ORM模式 JDO模式 CMP模式
1、历史与背景
c、ORM介绍
• ORM(Object Relational Mapping),即对象关系 映射。指以O/R原理设计的持久化框架 (Framework),包括 O/R机制、SQL自生成、事 务处理和Cache管理等。 • ORM的实现思想就是将关系数据库中表的数据映射 成为对象,以对象的形式展现,这样开发人员就可 以把对数据库的操作转化为对这些对象的操作。因 此它的目的是为了方便开发人员以面向对象的思想 来实现对数据库的操作。
3、annotation
• org.hibernate.cfg.AnnotationConfiguration; • Deprecated. All functionality has been moved to Configuration • 这个注解读取配置的class已经废弃,现在读取配 置不需要特别注明是注解,直接用Configuration cfg = new Configuration();就可以读取注解。 • Hibernate4.1版本中推荐使用annotation配置,所 以在引进jar包时把requested里面的包全部引进来 就已经包含了annotation必须包了
a、应用程序的分层体系结构
• 随着计算机应用软件的发展,应用程序逐渐由单层 体系结构发展为多层体系结构。其中,三层结构是 目前典型的一种应用软件结构,如图1左。 • 表述层:提供与用户交互的界面,如GUI(图形用 户界面),web页面等; • 业务逻辑层:负责各种业务逻辑,直接访问数据库, 提供对业务数据的保存、更新、删除和查询操作; • 数据库层:负责存放管理应用的持久性业务数据
4、hibernate应用
• Hibernate对JDBC进行了非常轻量级的对象 封装,使得Java程序员可以随心所欲的使 用对象编程思维来操纵数据库。 Hibernate 可以应用在任何使用JDBC的场合,它既可 以在Java的客户端程序使用,也可以在 Servlet/JSP的Web应用中使用。最具革命 意义的是,Hibernate可以在应用EJB (Enterprise JavaBeans是Java应用于企业 计算的框架)的J2EE架构中取代CMP,完 成数据持久化的重任。
1、历史与背景
1、历史与背景
b、持久化层(如图1右)
• (1)什么叫持久化?
– 持久(Persistence),即把数据(如内存中的对象)保 存到可永久保存的存储设备中(如磁盘)。持久化的主要 应用是将内存中的数据存储在关系型的数据库中,当然也 可以存储在磁盘文件中、XML数据文件中等等。
• (2)什么叫持久层?
1、数据库方言的设置
• <property name=”dialect”>org.hibernate.dialect.M ySQL5Dialect</property> • 在3.3版本中连接MySQL数据库只需要指明 MySQLDialect即可。在4.1版本中可以指出 MySQL5Dialect
Hibernate介绍及Hibernate4新 特性
----程同栓
什么是hibernate
• • • • • • 1、历史与背景 2、hibernate定义 3、hibernate的作用 4、hibernate的应用 5、hibernate API简介 6、hibernate优缺点
1、历史与背景
1、历史与背景
• 常见的ORM中间件有:
– – – – – – – – – Apache OJB (http://db.apache.org/ojb/) Cayenne (http://objectstyle.org/cayenne/) Jaxor (http://jaxor.sourceforge.net) Hibernate (http://www.hibernate.org) iBatis (http://www.ibatis.com) jRelationalFramework (http://ijf.sourceforge.net) mirage (http://itor.cq2.org/en/oss/mirage/toon) SMYLE (http://www.drjava.de/smyle) TopLink (http://otn.oracle.com/products/ias/toplink/index.html)