欢迎来到天天文库
浏览记录
ID:46943197
大小:266.00 KB
页数:26页
时间:2019-11-30
《Hibernate的会话与OR映射》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第19章Hibernate的会话与O/R映射开源框架技术——SSH学习目标掌握会话的基本应用掌握如何映射主键掌握如何映射普通属性掌握如何建立多对一关联关系掌握如何建立一对一关联关系准备工作假设有一名为mydb的数据库,数据库中有以下四张表格tbluser、tblteacher、tblStudent、tblCourse、tblSC,它们的关系如下:它们的结构如下:tbluser的结构字段意义类型允许为空是否主码外码备注userno用户编号char(11)否是否username用户名varchar(20)否否否password密码char(6)否否否tblteacher的结构字段意义类型允
2、许为空是否主码外码备注tno教师编号char(11)否是否tname教师名字varchar(20)否否否tsex教师性别char(2)是否否tage教师年龄int(4)是否否tblStudent的结构字段意义类型允许为空是否主码外码备注id编号int(11)否是否自动增长sno学号char(11)否否否sname学生名字varchar(20)否否否ssex学生性别char(2)是否否sage学生年龄int(4)是否否tblCourse的结构字段意义类型允许为空是否主码外码备注id编号int(11)否是否自动增长tno课程号char(11)否否否tname课程名字varchar(20)否
3、否否tblSC的结构字段意义类型允许为空是否主码外码备注id编号int(11)否是否自动增长stuid学生编号int(11)否否是,参照tblStudent的id列cid课程编号int(11)否否是,参照tblCourse的id列score课程成绩int(11)是否否19.1会话(Session)的基本应用使用Hibernate读、写数据库中的数据时,必须依赖org.hibernate.Session。获得Session的方法是使用HibernateSessionFactory的静态方法getSession()。可以通过Session获取Query对象,然后调用Query对象的list
4、()方法进行查询操作。可以使用Session的save()、delete()、update()函数进行增、删、改操作。19.1.1保存持久化对象(1)创建一个新的实体bean(持久化)对象实例并设置相应属性。(2)获取Session对象。(3)开启事务。(4)调用Session的save(Objecto)(或saveOrUpdate(Objecto))方法保存持久化对象。(5)提交事务。(6)关闭Session对象。19.1.1保存持久化对象实例19.1.2判断持久化对象之间的关系对于一个实体Bean对象,有两层含义,一是在JVM中普通的对象实例,一是数据表中的一行记录。从同一个Ses
5、sion中获得同一行记录对应的实体Bean对象对JVM来其实是同一个持久化对象,可以使用==判断。从不同Session中获得同一行记录对应的实体Bean对象,虽然内容相同,但是对JVM来说是不同的对象,不能用==判断,可覆盖实体Bean的equals方法来判断。19.1.3装载持久化对象Session提供有load()和get()两个方法,可以根据主键从数据库中直接装载数据,并以持久化对象返回。常用的形式为:session.load(ClasstheClass,Serializableid)session.get(ClasstheClass,Serializableid)load()与
6、get()方法的区别:当要装载的对象不存在时load()仍会返回一个只含主键属性信息的对象,其他属性不可存取get()返回一个null19.1.3装载持久化对象实例19.1.4刷新持久化对象Session的refresh(Objectobject)方法可以根据数据库中的数据来刷新持久化对象中的属性值可以Session的isDirty()方法判断持久化对象中的数据是否已经被修改。19.1.5更新持久化对象如果持久化对象的属性值产生了变化,Hibernate在默认情况下会自动将已经改变了的属性值持久化。可以能过Session的setFlushMode(FlushModeflushMode)
7、方法修改更新模式FlushMode可以取以下值:FlushMode.AUTO:自动更新FlushMode.COMMIT:提交事务时更新FlushMode.MANUAL:手工提交FlushMode.ALWAYS:执行每条查询语句前都更新19.1.5续手工利用事务更新持久化对象(1)获取Session对象。(2)获得要更新的实体bean(持久化)对象实例并修改相应属性。(3)开启事务。(4)调用Session的update(Objecto)方法保存
此文档下载收益归作者所有