版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Hibernate基础基础 w 1 Hibernate概述 w 2 第一个Hibernate程序 w 3 Hibernate的配置文件 w 4 深入理解持久化对象 w 5 Hibernate的映射文件 w 6 JPA Annotation介绍 w 7 本讲小结 Hibernate概述 w Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非 常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程 思维来操纵数据库。 w Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程 序使用,也可以在Servlet/JSP的Web应用中使用。 w
2、最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP, 完成数据持久化的重任。 w JDBC(Java Data Base Connectivity)是一种用于执行SQL语句的Java API。 w JDBC提供的主要接口: DriverManager类类 Connection类类 Statement类类 PreparedStatement类类 ResultSet类类 (1)加载JDBC驱动 (2)实例化数据库连接驱动类 (3)建立数据库连接,取得Connection对象 (4)建立Statement对象或PreparedStatement对象. (5)执行SQL语句
3、 (6)访问结果记录集ResultSet对象 (7)依次将ResultSet,Statement,PreparedStatement, Connection对象关闭,释放所占用的资源。 w 直接使用JDBC操作数据库的步骤很繁琐。 w JDBC操作的是关系型数据库。 w 用JAVA开发程序,则使用面向对象的思想。 w Hibernate正是在这两种不同的模型之间建立关联,Hibernate给我们提 供了利用面向对象的思想来操作关系型数据的接口。 持久化和持久化层 w 在Java中将对象自动持久化到数据库中,我们需要了解两个概念。 持久化持久化 就是对数据和程序状态的保持。 大多数情况下特别是企
4、业级开发应用时,数据持久化往往也就 意味着将内存中的数据保存到磁盘上加以固化,而持久化的实 现过程则大多通过各种关系型数据库来完成的。 持久化层持久化层 在目前的企业级应用系统设计中,MVC为主要的系统架构模式。 MVC中的M层包含了复杂的业务逻辑、数据逻辑以及数据存取机 制,如JDBC的连接、SQL生成和Statement创建,还有Result结 果集的读取等。 客户层 Web层 业务层 客户层 Web层 业务层 持久化层 数据库层数据库层 从业务层分离出的持久化层 持久化和持久化层 持久化和持久化层 持久化层持久化层 持久化层封装了数据访问细节,为业务逻辑层提供了面向对象 的API。完善的
5、持久化层应该达到以下目标: 代码可重用性高,能够完成所有的数据库访问操作。代码可重用性高,能够完成所有的数据库访问操作。 如果需要的话,能够支持多种数据库平台。如果需要的话,能够支持多种数据库平台。 具有相对独立性,当持久化层的实现发生变化,不会影响具有相对独立性,当持久化层的实现发生变化,不会影响 上层的实现上层的实现。 那么,如何实现持久化层呢?对于复杂的数据模型,直接通过 JDBC编程来实现健壮的持久化层需要有专业的知识,对于企业 应用的开发人员,花费大量时间从头开发自己的持久化层不是 很可行。 w 面向对象是从软件工程基本原则(如耦合、聚合和封装)的基础上发 展起来的。 w 关系数据库
6、则是从数学理论发展而来的,两套理论存在显著的区别。 w Java是完全面向对象的语言,这个冲突就表现的越发明显。 如何进行对象关系数据库的匹配 public class User private String name; private String password; private List address; create table tbl_user ( name varchar(255) not null , password varchar(255), . primary key (name) ) 对象对象关系数据库关系数据库 如何进行对象关系数据库的匹配?如何进行对象关系数据库的匹
7、配? w ORM的全称是Object/Relation Mapping,即对象/关系映射。 w ORM是一种规范、模型、思想 w 具体的ORM框架可作为应用程序和数据库的桥梁。 w 目前ORM的产品非常多,比如Apache组织下的OJB,Oracle的TopLink、 JDO和JPA等,当然还包括本章介绍的Hibernate。 w ORM并不是一种具体的产品,而是一类框架的总称,它概述了这类框 架的基本特征:完成面向对象的程序设计语言到关系数据库的映射。 w 基于ORM框架完成映射后,既可利用面向对象程序设计语言的简单易 用性,又可利用关系数据库的技术优势。 w Enitiy EJB Enit
8、iy EJB实际上也是一种实际上也是一种ORM技术技术 EJB为为Java EE的蓬勃发展赢得了极高的声誉,的蓬勃发展赢得了极高的声誉,EJB作为一种重量作为一种重量 级、高花费的级、高花费的ORM技术具有不可比拟的优势。技术具有不可比拟的优势。 现在十分流行的轻量级现在十分流行的轻量级Java EE架构,其实质是对经典架构,其实质是对经典Java EE架架 构的模仿构的模仿虽然存在些许的改进。虽然存在些许的改进。 EJB3.1也采取了低侵入式的设计,增加了也采取了低侵入式的设计,增加了Annotation,也具有极,也具有极 大的吸引力。大的吸引力。 w Hibernate 目前最流行的开源
9、目前最流行的开源ORM框架,已经被选作框架,已经被选作JBoss的持久层解决方案。的持久层解决方案。 整个整个HIbernate项目也一并投入了项目也一并投入了Jboss的怀抱,而的怀抱,而JBoss又加入又加入 了了RedHat组织,所以现在组织,所以现在Hibernate属于属于RedHat 的一部分。的一部分。 Hibernate 灵巧的设计、优秀的性能,还有其丰富的文档都是其灵巧的设计、优秀的性能,还有其丰富的文档都是其 风靡全球的重要因素。风靡全球的重要因素。 w iBatis Apache软件基金组织的子项目。与其称它为一种软件基金组织的子项目。与其称它为一种ORM框架,不框架,不
10、 如称它为一中如称它为一中“SQL Mapping”框架。框架。 曾经在曾经在J2EE的开发中扮演非常重要的角色,但因为不支持存粹的的开发中扮演非常重要的角色,但因为不支持存粹的 面向对象操作,因此现在逐渐地被取代。面向对象操作,因此现在逐渐地被取代。 但是在一些公司,依然占有一席之地,特别是一些对数据访问特别但是在一些公司,依然占有一席之地,特别是一些对数据访问特别 灵活的地方,灵活的地方,iBatis更加的灵活,它允许开发人员直接编写更加的灵活,它允许开发人员直接编写SQL语语 句。句。 w TopLink Oracle公司的产品,作为一个遵循公司的产品,作为一个遵循OTN协议的商业产品,
11、协议的商业产品, TopLink 在开发过程中可以自由地下载和使用,但是一旦作为商在开发过程中可以自由地下载和使用,但是一旦作为商 业产品被使用,则需要收取费用。由于这一点,业产品被使用,则需要收取费用。由于这一点,TopLink 的市场的市场 占有率不高。占有率不高。 w OBJ Apache软件基金组织的子项目。另一个开源的软件基金组织的子项目。另一个开源的ORM框架,可以说框架,可以说 是是Apache作为作为iBatis之后的取代产品,也是非常优秀的之后的取代产品,也是非常优秀的O/R Mapping框架框架 但是由于但是由于Hibernate 的广芒太盛,所以并未有广泛的使用,而且的
12、广芒太盛,所以并未有广泛的使用,而且 由于由于OJB的开发文档不是很多,这也影响了的开发文档不是很多,这也影响了OJB的流行。的流行。 w 开源免费的License 方便需要时研究源代码,改写源代码,进行功能定制。方便需要时研究源代码,改写源代码,进行功能定制。 w 轻量级封装 避免引入过多复杂的问题,调试容易,减轻程序员的负担。避免引入过多复杂的问题,调试容易,减轻程序员的负担。 w 具有可扩展性,API开放 功能不够用时,自己进行编码扩展。功能不够用时,自己进行编码扩展。 w 开发者活跃,有稳定的发展保障。 w 1 Hibernate概述 w 2 第一个Hibernate程序 w 3 Hi
13、bernate的配置文件 w 4 深入理解持久化对象 w 5 Hibernate的映射文件 w 6 JPA Annotation介绍 w 7 本讲小结 w 下载MySQL数据库 http:/dev.MySQL.com/downloads/ w 安装MySQL数据库 w 配置MySQL数据库 默认用户名默认用户名root,密码,密码admin(自定义)(自定义) w 使用MySQL数据库 掌握掌握MySql常用命令常用命令 安装安装Navicat for MySQL(前端工具)(前端工具) w 下载MySQL的JDBC驱动 w Hibernate推荐使用数据源来管理数据库连接,这样保证最好性能。
14、 Hibernate推荐使用推荐使用C3Po数据源。数据源。 位置: hibernate-release-4.3.5.Finalliboptionalc3p0 数据源数据源 是一种提高数据库连接性能的常规手段,数据源会负责一个维持一个数据连是一种提高数据库连接性能的常规手段,数据源会负责一个维持一个数据连 接池,接池, 当程序创建数据源实例时,系统会一次性创建多个数据库连接,并把这些数当程序创建数据源实例时,系统会一次性创建多个数据库连接,并把这些数 据库连接保存在数据连接池中,据库连接保存在数据连接池中, 当程序需要进行数据库访问时,无需重新获得数据库连接,而是从数据库连当程序需要进行数据库
15、访问时,无需重新获得数据库连接,而是从数据库连 接池中取出一个空闲的数据库连接。接池中取出一个空闲的数据库连接。 当程序使用数据库连接访问数据库结束之后,无须关闭数据库连接,而是将当程序使用数据库连接访问数据库结束之后,无须关闭数据库连接,而是将 数据库连接归还给数据库连接池即可。数据库连接归还给数据库连接池即可。 通过这种方式就可以避免频繁地获取数据库连接、关闭数据库连接所导致的通过这种方式就可以避免频繁地获取数据库连接、关闭数据库连接所导致的 性能下降性能下降 w 用Hibernate直接创建表 先创建数据库(手动完成)先创建数据库(手动完成) 再创建数据库表(程序完成)再创建数据库表(程
16、序完成) Hibernate框架作为一个框架作为一个ORM的具体实现,是的具体实现,是Java应用和应用和 关系数据库之间的桥梁,主要用来实现关系数据库之间的桥梁,主要用来实现Java对象持久化操对象持久化操 作,在作,在Java应用中使用应用中使用Hibernate主要有以下几个步骤:主要有以下几个步骤: (1)创建持久化类;)创建持久化类; (2)创建对象)创建对象-关系映射文件;关系映射文件; (3)创建)创建Hibernate配置文件;配置文件; (4)使用)使用Hibernate API编写访问数据库的业务逻辑代码。编写访问数据库的业务逻辑代码。 /读取hibernate.cfg.x
17、ml文件 Configuration cfg = newnew Configuration().configure(); Configuration().configure(); /创建SessionFactory SessionFactory factory = cfg.buildSessionFactory(); Session session = nullnull; ; trytry session = factory.openSession(); /开启事务 session.beginTransaction(); User user = newnew User(); User(); u
18、ser.setName(张三); user.setPassword(123); user.setCreateTime(newnew Date(); Date(); user.setExpireTime(newnew Date(); Date(); /保存数据 session.save(user); /提交事务 session.getTransaction().commit(); catchcatch(Exception e) (Exception e) e.printStackTrace(); /回滚事务 session.getTransaction().rollback(); finally
19、finally if if (session != (session != nullnull) ) if if (session.isOpen() (session.isOpen() session.close(); 1.public class HibernateSessionFactory 2. private static String CONFIG_FILE_LOCATION = /hibernate.cfg.xml; 3.private static final ThreadLocal threadLocal = new ThreadLocal(); 4. private stati
20、c Configuration configuration = new Configuration(); 5. private static org.hibernate.SessionFactory sessionFactory; 6. private static String configFile = CONFIG_FILE_LOCATION; 7.static try 8.configuration.configure(configFile); 9.sessionFactory = configuration.buildSessionFactory(); 10. catch (Excep
21、tion e) 11.System.err.println(% Error Creating SessionFactory ); 12.e.printStackTrace(); 13. 14. private HibernateSessionFactory() 15. public static Session getSession() throws HibernateException 16. Session session = (Session) threadLocal.get(); 17.if (session = null | !session.isOpen() 18.if (sessionFactory = null) 19.rebuildSessionFactory(); 20. 21.session = (sessionFactory != null) ? sessionFactory.openSession() : null; 22.threadLocal.set(session); 23. 24. return session; 25. w Hibernate的配置文件的默认文件名为hibernate.cfg.xml, w 当程序调用Configura
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 雨课堂学堂在线学堂云健身气功(山东体育学院)单元测试考核答案
- 护理安全中的重症监护患者安全管理
- 行政执法检查相关制度
- 护理操作技术的导尿技术
- 组织生活计划与评估制度
- 2025年贵州省铜仁市印江土家族苗族自治县第二集团校联考中考三模道德与法治试题(无答案)
- 餐饮业厨师食品安全操作规范流程手册
- 2026年3月重庆市万州区新乡镇人民政府招聘非全日制公益性岗位2人备考题库及答案详解【有一套】
- 2026江苏南京大学南京赫尔辛基大气与地球系统科学学院准聘长聘教师岗位(事业编制)招聘备考题库含完整答案详解(全优)
- 2026年上半年海南文昌市校园招聘事业单位人员38人备考题库(1号)含完整答案详解(易错题)
- AQ 1119-2023 煤矿井下人员定位系统技术条件
- JGJ-T+141-2017通风管道技术规程
- 《休闲活动策划与管理》课件-12休闲活动内容策划
- 影院装修合同
- 《小儿过敏性紫癜》课件
- LCIA简便自动化培训
- 未成年人学校保护规定
- GB/T 16553-2003珠宝玉石鉴定
- 2023年吉林大学自考生物制药专业招生简章
- 公路工程质量与安全管理课件
- 架桥机安装使用验收表
评论
0/150
提交评论