使用Hibernate实现数据的增删改查PPT幻灯片课件_第1页
使用Hibernate实现数据的增删改查PPT幻灯片课件_第2页
使用Hibernate实现数据的增删改查PPT幻灯片课件_第3页
使用Hibernate实现数据的增删改查PPT幻灯片课件_第4页
使用Hibernate实现数据的增删改查PPT幻灯片课件_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第12章,1,目录,1,2,基于XML映射文件的数据删除确认,基于注释注释确认数据删除,2,12.1,基于XML映射文件的数据删除确认,3,12.1.1应用程序不需要直接访问数据库,主数据库对应用程序完全没有影响。应用程序只需创建、修改和删除持久性对象。Hibernate负责将此作业转换为指定的数据表。在使用Hibernate框架之前,我们先看一下Hibernate是如何实现ORM框架(即Hibernate)的执行过程的,如图所示。要通过Hibernate运行数据库,需要执行以下步骤:(1)读取并解析配置文件。(2)读取和解析映射信息,以SessionFactory创建。(3)打开会话;(4)开始工作。(5)执行数据库操作(6)提交事务(回滚事务);(7)关闭Session,然后关闭SessionFactory。添加12.1.2数据,5,添加数据实例,体验Hibernate的魅力。此实例使用的数据库是MySQL5.7。使用Hibernate向数据库restrant的users表中添加新记录。数据表users部分字段显示在表中。在MyEclipse中创建名为hibernate-1的Java项目。项目中保存项目所需jar包的新文件夹“lib”表示项目hibernate-1的最终目录结构,如图所示。添加12.1.2数据,将第6,11章第11.2节中的Hibernate所需jar软件包复制到条目下的lib目录中。这意味着Hibernate安装完成。将MySQL的JDBC驱动程序包复制到项目的lib目录中。此目录使用版本 MySQL-connector-Java-5 . 1 . 42-bin . jar 。选择项目的lib目录中的所有jar包,单击鼠标右键,然后选择build path“”AddtoBuildPath命令,将该jar包添加到项目的构建路径中。创建实体类User.java(对应于数据表users)创建映射文件User.hbm.xml创建hibernate配置文件hibernate.cfg.xml创建测试类HibernateTest.java测试方法testSaveUser,Hibernate在此过程中,Hibernate对象发生了状态变化。Hibernate中的对象具有三种状态:瞬时、持久和分离。永久状态的对象也称为永久对象(PO),瞬时对象和脱离管道对象也称为value object(VO)。图中显示了Hibernate中对象的三种状态转换关系。Save()、load()或get()、find()、update()、saveOrUpdate()和lock () Hibernate对象已关闭()瞬时状态对象不再被其他对象引用时,Java虚拟机将很快回收。例如,在测试类中,使用new关键字创建的实例类user的状态为瞬时状态。可以使用Save()和saveOrUpdate()方法将Hibernate中的临时对象转换为永久对象,并将从该对象获取的数据插入数据库表中。处于永久状态的对象在数据库中具有相应的记录,并且具有永久id。持久状态对象位于会话实例的缓存中。也就是说,它始终与一个会话实例相关联。会话清理缓存后,数据库将根据持续状态对象的属性更改同时更新。例如,在测试类中调用Session实例的save方法后,user对象的状态从瞬时状态变为持续状态。如果永久对象的关联Session实例执行delete()方法后,永久对象进入临时状态,并且数据库中的相应记录被删除,则该对象不再与数据库中的记录相关联。持续状态对象在关联的Session实例上运行close方法、clear方法或evict方法时,持续状态对象将进入托管状态。例如,在测试类中,调用了Session.close()方法以关闭Session,然后将user对象状态从持续状态转换为受管理状态。此后,如果user对象中的属性值发生更改,Hibernate不再将更改同步到数据库。管理状态对象不再被对象引用时,将很快被垃圾回收。重新连接到Session后,管理状态对象将返回永久状态。管理状态对象具有数据库记录id,可以使用Session的update()或saveOrUpdate()方法将管理状态对象转换为持续状态(对象与数据库记录同步)。管理状态物件与过度物件的相同之处在于,当物件不再参考时,会很快回收为垃圾。区别在于管理状态对象具有数据库记录id,没有瞬态对象。12.1.3数据加载,9,数据加载是通过标识符获取指定类的持久性对象,可以通过Session实例加载数据,Session是object get (classclass,serializable id): entity类对象和Objectload (classclass,serializeableid):通过实体类class对象和id加载数据。使用Get()方法:向测试类HibernateTest添加testGetUser()方法,并使用Test说明对其进行修饰,以从数据表users加载编号Id为1的用户对象并将其输出到控制台。使用Load()方法:从测试类HibernateTest中添加testLoadUser()方法,并使用Test说明进行修饰,以从数据表users中加载编号Id为1的用户对象,并从控制台输出、12.1.4中删除数据。10、数据删除可以根据主键值从数据表中删除记录,还可以通过Session实例的delete(Objectobj)方法从数据库中删除记录。Delete方法的参数obj表示要删除的永久状态对象。因此,在调用delete方法之前,必须通过Session的get方法获取指定id的持久状态对象。向测试类HibernateTest添加testDeleteUser()方法,并使用Test说明进行修饰,以从数据表users中删除编号id为8的记录。12.1.5修改数据,11,可以通过Session实例的update(Objectobj)方法修改数据库中的记录,参数obj表示要修改的对象。Update方法将与特定Session实例关联的受管理状态的对象加载到Session高速缓存中,使该状态持续。永久状态物件,必须先透过Session的get方法取得指定的id,才能呼叫Update方法。向测试类HibernateTest添加testUpdateUser()方法,然后使用Test说明进行修饰,将数据表users中Id号2的记录中的登录名从 shijun 修改为 SJ 。以面向对象的思维编写代码是Hibernate持久化操作的想法。12.2,基于注释注释注释删除数据,12,12.2基于注释注释注释删除数据,13,JDK1.5开始,Java通过添加注释注释注释注释注释注释技术解决方案来管理通过XML配置文件最初管理的信息,从而将Hibernate配置为0。Hibernate的Annotation方案已基于Java persistence(Java)进一步扩展。使用Annotation注释实现数据的CRUD步骤如下:(1)复制项目hibernate-1,将其命名为“hibernate-2”,然后导入到MyEclipse开发环境中。(2)修改实体类User.java,通过Annotation注释在实体类中执行数据表和实体类之间的映射,不需要使用映射文件,因此,首先从条目hibernate-2的com.hibernate.entity包中删除映射文件User.hbm.xml,然后修改实体类User.java(3)修改Hibernate配置文件。,基于12.2注释注释添加删除数据,14,javaper sistence API(JPA)规范使用Annotation管理实体类和数据表之间的映射关系,以同时维护两个文件(Java实体类和XML映射文件)和映射信息(Annotation在实体类User.java代码中,使用了Entity标题、Table标题、Id标题、GeneratedValue标题和Column标题,就像在表格中一样。主键生成策略是通过GenerationType指定的。generation

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论