根据上一节的介绍,我们在来说一下hibernate的主要优点吧
1:提高生产力 hibernate是JDBC轻量级的对象封装,它是一个独立的对象持久化对象,因为我们就不用在写枯燥的jdbc语句,减少编码量
2 使开发更对象化了 我们可以直接操作对象就可以了 ,像上面的小应用 我们只要sava一个对象,数据就可以存进去了。
3 移植性 我们在开发的过程中没有涉及到具体的sql语句操作,虽然sql是标准的,但是各个厂家还是有些不同,很典型的就像分页,在这里我们就用hibernate标准的API直接sava,hibernate会自动地转换成数据库的相关语句,关键是在于方言的配置,也就是适配器的配置。
4 支持透明持久化, 看上面我们的那个Users对象,它没有实现任何接口也没有继承任何类,而hibernate就给存进去了,所以对我们的Users实体来说,它没有侵入性,我们Users实体就是最纯粹的POJO对象
然而使用hibernate正确的开发模式 :
1 :先建立对象模型,这个对象模型我们可以称为领域模型
2 :建立它们映射关系
3 :根据映射关系 导出相应的表,然后再进行相应的开发操作。
这是从对象这方面来考虑的
而现实中,一般的做法都是先设计数据库表,再采用hibernate进行应用开发,这样感觉hibernate不是这么好用了,或者说是功能体现不出来,我们讲究的是以对象为中心,这样又以关系数据库为中心了,从关系转到对象 !
为什么说先以对象建模比较好呢,因为对象更能体现出现实世界的这种事物,让人更好的理解需求,包括模型,所以我们还是以对象为中心,在这个过程中都会以对象为中心,不会先建立表,在做映射,我们需要这种思维,所以我在一下的hibernate学习过程中都会以这种思想为主。
下面我再说说hibernate应用的具体流程
我们在做hibernate应用的时候,因为hibernate是以java开发的开源框架,所以我们要把相关的jar包引进来,还有相关的jdbc驱动,为了方便管理这些jar包以及下次方面导入我们可以创建自定义的User Libraries,把hibernate相关的具体jar包导进去 ,在工程中引用 具体的方式已经是hibernate介绍(一)中介绍过了
更觉hiberrnate需要我们要提供一个hibernate.cfg.xml的配置文件或者hibernate.property属性文件 当然这是现实开发中大多数采用hibernate.cfg.xml这种方式 。若果我们想跟踪hibernate细节的东西 或者为了方便调试我们最好要把log4j日子文件加进去,不然出错了它不会在控制台打印
hibernate环境搭建好了 下面就是hibernate的使用过程了,先建立实体,如果有多个或者他们之间有关系,我们还要建立它们之间的关系,这样映射关系就有了,我们一般会采用hibernate的一个工具就是hbm-ddl的一个转换,根据映射文件它会自动生成表,存储这一块我们就可以不用操心了
表已经有了,我们开发客户端就可以了,表对我们来说是透明的,我们操作的只是对象就可以了
下面根据上面的图片 来介绍下我们开发过程中常用到的几个核心接口
首先我们介绍在客户端开发设计到的几个对象
configuation 它的主要作用是用来加载系统配置文件的,configuration在new完之后它只会加载.property文件 所以我们必须采用它们的方法.configure()这样它才会加载hibernate.cfg.xml文件,而这个文件时可以改名的 改完名我们可以在.configure()源码中默认的是hibernate.cfg.xml,我们该完传过去就可以了
SessionFactory 它是和数据库绑定的,一个数据库对应一个SessionFactory,也就是说这数据库里面所有的表以及表之间的映射都会放到SessionFactory中,后期会涉及到二级缓存 SessionFactroy和二级缓存相关,二级缓存是进程级的,缓存就拿我们的web开发中的application来理解就相对于它似的
SessionFactory是一个重要级的兑现,重于轻时一个相对的,因为SessinFactory对象创建时间比较耗时,所以我们这里成为重量级的,所有的SessionFactory这个对象我们最好只创建一次,不要频繁的创建,另一方面SessionFactory是线程安全的,所以说我们完全可以把它放到一个成员变量里,有多线程来调用它这样也是可以的。
session 操纵hibernate来进行CRUD操作(CRUD任务是完成数据库的交流 ,包含了很多常见的sql语句)
我们必须要理解session ,我们要记住session不同于connection我们也可以这样理解:session是对connection又做了一重包装,你open一个session的时候并不代表open一个connection只有真正用的时候它才去会拿一个connection 从连接池里去拿,我们现在上面的配置没有连接池,但是hibernate默认上实现了连接池,你可以设置连接池的大小,我们去看property文件有一个 poolsize 这个对象,而且这个链接吃还可以集成第三方连接池,像ddcp(tomcat用的)为什么说session和connection不一样呢 ,connection就是一个连接,而我们这里的session管理了缓存,所以学hibernate我们要学习它的缓存
它对我们的实体对象是一个生命周期的管理,还有我们要记住session是非线程安全的,所以说我们open一个session不能多线程恶搞来用,所以我们通常一个业务请求过来open一个session业务请求完毕,session关闭,session关了事务也就关了,因为通常一个业务请求也对应一个事务
jndi java名称与目录接口,jndi是用于管理我们对象的 特别是ejb应用,他会把所有的ejb应用都放到jndi这颗树上,它就像一个电话薄,一个姓名对应一个电话,一个友好的字符串对应一个实例。
我们采用的tomcat连接池也是采用这种形式来做的,连接池对象注射到这个树上,以后我们拿这个串就可以了 这样我们就可以访问的到
采用jdni的好处 一个事我们对象可以统一管理。这是一方面另一方面我们不依赖于具体的实现了我们lookup来查找这样的连接池 我们不知道连接池是dbcp的实现,这个连接池我们可以换成其他的,我们连接池对我们来说是透明的
jdbc java的数据库链接从事务上来看 我们可以称为是本地事物,本地事物是对一个数据库起作用,但是一旦跨数据库跨其他资源这样本地事务就没法实现了 ,这样我们就可以使用jta事务
JTA : jta是java事务的API,它实现两阶段提交协议
- 大小: 18.5 KB
分享到:
相关推荐
- 其他Hibernate相关的配置参数,比如二级缓存的配置、事务处理等。 通过上述步骤和内容的了解,可以掌握Hibernate框架的基本使用,从而在Java开发中有效地运用ORM技术简化数据库操作,提高开发效率和程序质量。
《精通Hibernate:Java持久化对象技术详解[第二版]》是一部深入探讨Hibernate框架的专业书籍,旨在帮助Java开发者熟练掌握和运用这一强大的ORM(Object-Relational Mapping)工具。Hibernate是Java开发领域中广泛...
#### 二、二级缓存介绍 Hibernate 的二级缓存是一种用于存储实体和集合查询结果的缓存层,它可以跨多个会话保持数据的有效性。通过使用二级缓存,可以显著提高应用性能,尤其是在频繁查询相同数据的情况下。 #### ...
Hibernate支持第二级缓存和查询缓存,可以通过实现这个接口进行自定义配置。 总之,Hibernate API 提供了全面的工具集,让开发者能够高效地处理数据库操作,同时通过扩展接口支持数据库独立性,增强了灵活性和可...
Ehcache是Hibernate的一个可选二级缓存插件,用于存储数据库查询结果,减少对数据库的直接访问。当相同的数据再次被请求时,可以从缓存中快速获取,提高系统响应速度。在不使用缓存的情况下,可以通过配置关闭。 5...
本篇将详细介绍Hibernate二级缓存的概念、作用以及所需jar包的作用。 一、Hibernate二级缓存概念 Hibernate的一级缓存是指Session级别的缓存,每个Session内部都有一个一级缓存,用于存储实体对象,当Session关闭时...
本书不仅是一本教程和参考指南,还深入介绍了如何开发和优化工业级别的Hibernate应用程序。作者们按照从简单到复杂的顺序逐步介绍概念,并通过丰富的实例来解释每一个细节。以下是本书覆盖的一些关键知识点: 1. **...
在 Hibernate 中,二级缓存和查询缓存是提高应用性能的重要机制。下面将详细介绍如何开启并理解这两个缓存机制。 ### 1. 一级缓存与二级缓存 #### 1.1 一级缓存 一级缓存是 Hibernate 内置的 Session 缓存,它是每...
下面将详细探讨如何在Hibernate中配置二级缓存,并简要介绍所谓的“三级缓存”。 #### 一、二级缓存配置 **1. 引入依赖库** 首先,需要确保项目中已经引入了相应的缓存实现库,如EhCache。在Maven项目的`pom.xml`...
【标题】"01_传智播客hibernate教程_hibernate介绍与动手入门体验" 涉及的是一门关于Hibernate的初学者教程,旨在帮助开发者了解并掌握这一流行的Java对象关系映射(ORM)框架。Hibernate是Java开发中的一个关键工具...
本篇文章将深入探讨Hibernate的二级缓存机制,以及如何进行一级缓存与二级缓存的同步,同时还会介绍二级缓存的配置文件设置。 一级缓存是Hibernate默认提供的缓存,每个SessionFactory实例都有一个一级缓存。当对象...
《Hibernate实战》第二版是一本深入探讨Java领域中ORM(对象关系映射)技术的经典教程。Hibernate作为Java EE开发中的重要框架,它有效地解决了数据库与Java对象之间的转换问题,简化了数据操作。这本书针对初学者和...
以上就是Hibernate核心开发接口的简要介绍。在实际开发中,通过熟练掌握这些接口和概念,我们可以高效地利用Hibernate进行数据库操作,降低系统的耦合度,提升开发效率。通过阅读给出的源码s2sh_Hibernate03_CoreAPI...
通过上述介绍,我们可以了解到Hibernate二级缓存对于提升系统性能的重要性。在实际项目中,合理利用二级缓存能够显著减少数据库的负载,提高应用程序的响应速度。但同时,也需注意其可能带来的数据一致性风险和额外...
【标题】:“01 Hibernate介绍与动手入门体验” 在IT领域,Hibernate是一个广泛使用的对象关系映射(ORM)框架,它极大地简化了Java开发者在处理数据库操作时的工作。本课程旨在为初学者提供一个深入理解Hibernate...
该书详细介绍了Hibernate的基础概念、配置、实体管理、查询语言(HQL和Criteria API)、关联映射、缓存策略、性能优化以及高级特性。通过实际案例,读者可以了解到如何在项目中有效地使用Hibernate进行数据持久化。书...
2. **HIBERNATE - Relational Persistence for Idiomatic Java.pdf**:这本书可能详细介绍了Hibernate如何实现Java中的关系数据持久化,可能会包含最佳实践和示例代码。 3. **Hibernate 中文API文档.chm**:这是...
主要介绍了Java的Hibernate框架中的缓存与二级缓存,Hibernate是Java的SSH三大web开发框架之一,需要的朋友可以参考下
在本书中,作者详细介绍了Hibernate的核心概念、配置、实体管理、数据持久化、查询语言以及高级特性。 首先,我们要理解Hibernate的基本理念。ORM(Object-Relational Mapping)是将关系数据库的数据模型映射到面向...
《Hibernate in Action 第二版中文版》是一本深入解析Hibernate框架的专业教材,广泛应用于J2EE课程的教学中。Hibernate作为Java领域中领先的对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以专注...