




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,本讲主要内容,主要内容1.深入了解hibernate2.掌握如何配置hibernate,完成对数据库的增删改查操作3.hibernate中复杂的映射(一对一,多对一,一对多,多对多),2,1.了解hibernate,1.1回顾JDBCJava访问数据库最原始的方法是通过JDBC来完成的。JDBC(JavaDataBaseConnectivity,java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC是J2EE标准的一部分,它提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。,3,java.sql包提供了JDBCAPI,开发者可以通过它们编写数据库的程序代码。在java.sql包中常见的类和接口包括以下内容。DriverManager类:负责管理JDBC驱动程序。使用JDBC驱动程序之前,必须先将驱动程序加载并向DriverManager注册后才可以使用,同时提供方法来建立与数据库的连接。Connection类:负责维护JSP/JAVA数据库程序和数据库之间的联机。可以建立三个非常有用的类对象。,4,Statement类:通过Statement类所提供的方法,可以利用标准的SQL命令,对数据库直接新增、删除或修改操作PreparedStatement类:PreparedStatement类和Statement类的不同之处在于PreparedStatement类对象会将传入的SQL命令事先编好等待使用,当有单一的SQL指令比多次执行时,用PreparedStatement类会比Statement类有效率ResultSet类:负责存储查询数据库的结果。并提供一系列的方法对数据库进行新增、删除和修改操作。也负责维护一个记录指针(Cursor),记录指针指向数据表中的某个记录,通过适当的移动记录指针,可以随心所欲的存取数据库,加强程序的效率。,5,1.2持久化层访问数据库代码与业务逻辑混杂在一起带来了很多问题,这样的程序设计严重显示了程序的可扩展性和适应性,所以有必要要把涉及数据库操作的代码分离出来与业务逻辑分离。就形成了所谓“持久化层”的概念。持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等(在本书中介绍的“持久化”仅针对将存储数据库的情况)。,6,1.3ORM面向对象程序设计语言与关系数据库发展不同步时,需要一种中间解决方案,ORM框架就是这样的解决方案。ORM并不是一种具体的产品,而是一类框架的总称,它概述了这类框架的基本特征:完成面向对象的程序设计语言到关系数据库的映射。基于ORM框架完成映射后,既可利用面向对象程序设计语言的简单易用性,又可利用关系数据库的技术优势。ORM的全称是Object/RelationMapping,即对象/关系映射。ORM也可理解是一种规范,具体的ORM框架可作为应用程序和数据库的桥梁。目前ORM的产品非常多,比如Apache组织下的OJB,Oracle的TopLink,JDO,JPA等等,当然还包括hibernate。,7,1.4hibernateHibernate是一个免费的开源Java包,它使得程序与数据库的交互变得十分容易,更加符合面向对象的设计思想,像数据库中包含普通Java对象一样,而不必考虑如何把它们从数据库表中取出。使开发者可以专注于应用程序的对象和功能,而不必关心如何保存它们或查找这些对象开源和免费的License,轻量级封装,避免引入过多复杂的问题,调试容易,可减轻程序员负担。目前Hibernate在国内的开发人员相当多可以到Hibernate的网站/下载Hibernate包,8,2创建Hibernate程序步骤,编写hibernate配置文件创建持久化类(POJO)编写映射(mapping)文件,9,2.1hibernate配置文件,(1)建立数据库连接如连接到sqlserver2000,需要3个jar包文件。msbase.jar,mssqlserver.jar,msutil.jar(2)加载hibernate增加相应的jar包,hibernate.cfg.xml文件,HibernateSessionFactory类.,10,2.2创建持久化类(POJO),假设某数据库中有表loginid(int,notnull),name(varchar,50),pass(varchar,50)创建对应的类Login,11,Login.java,通过其他工具,12,2.3编写映射(mapping)文件Login.hbm.xml,提示:需把该文件声明增加到hibernate.cfg.xml文件中,并与Login.java放在同一目录,13,2.4了解hibernate的核心类,了解几个关于hibernate的核心类1.Configuration类Configuration类的作用是对Hibernate进行配置,以及对它进行启动。Configuration可以完成以下几方面的工作。(1)加载配置文件。在Hibernate的启动过程中,Configuration类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象,(2)动态添加映射文件。还可以利用Configuration类在程序中添加XML映射定义文件。(3)也可以通过Configuration指定配置属性:,14,2.SessionFactory类这里用到了一个设计模式工厂模式,用户程序从工厂类SessionFactory中取得Session的实例。SessionFactory不是轻量级的。它的设计者的意图是让它能在整个应用中共享。典型地来说,一个项目通常只需要一个SessionFactory就够了,但是当项目要操作多个数据库时,必须为每个数据库指定一个SessionFactory。SessionFactory在Hibernate中实际起到了一个缓冲区的作用,它缓冲了Hibernate自动生成的SQL语句和一些其它的映射数据,还缓冲了一些将来有可能重复利用的数据。,15,3.Session类Session类对于Hibernate开发人员来说是一个最重要的类。Session是持久层操作的基础,相当于JDBC中的Connection。然而在Hibernate中,实例化的Session是一个轻量级的类,创建和销毁它都不会占用很多资源。这在实际项目中确实很重要,因为在客户程序中,可能会不断地创建以及销毁Session对象,如果Session的开销太大,会给系统带来不良影响。Hibernate对数据库的基本操作时通过session来完成的,16,4.Transaction接口Transaction类是一个可选的API,可以选择不使用这个接口,取而代之的是Hibernate的设计者自己写的底层事务处理代码。Transaction接口是对实际事务实现的一个抽象,这些实现包括JDBC的事务、JTA中的UserTransaction、甚至可以是CORBA事务。之所以这样设计是能让开发者能够使用一个统一事务的操作界面,使得自己的项目可以在不同的环境和容器之间方便地移值。与Transaction相关还有一个Callback类。当一些有用的事件发生时例如持久对象的载入、存储、删除时,Callback类会通知Hibernate去接收一个通知消息。一般而言,Callback类在用户程序中并不是必须的,但要在项目中创建审计日志时,可能会用到它。,17,2.5编写对数据库操作,(1)增加,删除,修改session=HibernateSessionFactory.getSession();session.save(object);/delete,updatesession.beginTransaction().commit();/提交事务if(session!=null)session.close();,18,(2)查询(查询有一个或多个结果)Stringhql=“fromLogin”;Queryquery=HibernateSessionFactory.getSession().createQuery(hql);Listlist=query.list();具体封装看hibernateUtil.java,19,3复杂关系映射,Hibernate中的关联(Association)映射主要有3种:一对一关联、一对多(或多对一)关联、多对多关联。每种关联都可以分为单向和双向两种。关联关系映射通常情
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《刑事侦查学》考试卷及参考答案
- 2025年生物仪器操作试题及答案
- 电工高级题库及答案
- 2025年山西省阳泉市事业单位工勤技能考试考试题库及参考答案
- 气割工培训题库及答案
- UTC无人机培训课件
- UI-AO拼音课件教学课件
- 三年级阅读试卷及答案
- 考研数学真题及答案
- TBM安全培训课件
- 智慧水利方案介绍课件(共31张课件)
- 2024-2030年中国眼镜盒市场发展趋势及前景规划调研报告
- EPC工程总承包项目实施方案
- 国庆节详细活动方案
- 第八章新时代坚持和发展中国特色社会主义的重要保障-2024版研究生新中特教材课件
- 糖尿病课件教学课件
- 风力发电场突发环境污染事故应急预案
- 三年级地方课程教案上册贵州省
- 唐山市2024-2025学年度高三年级摸底演练 生物试卷
- 医疗美容诊所、门诊部规章制度及岗位职责
- 九年级化学上册开学第一课人教版2024化学
评论
0/150
提交评论