1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
hibernate课件

Hibernate介绍Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的 orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库hibernate 中的 OID 说明hibernate采用对象标识符,也就是通常我们所说的oid来创建对象和数据库表里记录的对应关系,对象的oid和表里的主键对应,所以说oid是非常重要的,不应该让程序来给它赋值.数据库区分同一表的不同记录是用主键来区分.oid必须定义为long,int,short类型Hibernate 对象标识符生成策略主键的分类 业务主键 VS 代理主键 代理主键是不具有业务性的;1,increment 由 Hibernate 自动以递增的方式生成标识符,适用代理主键;2,identity 由底层数据库生成标识符;适用代理主键;3,sequcence 由 Hibernate 根据底层数据库的序列来生成标识符;适用代理主键;4,hilo Hibernate 根据 high/low 算法来生成标识符。适用代理主键5,native 根据底层数据库对自动生成标识符的支持能力, 来选择 identity,sequence 或 hilo;适用代理主键;由第一种方式,也就是由hibernate来生成对象标识符的方式比较好.但是这种方式的缺点是只能一个hibernate对应一个数据库的表.当同时创建了seesionfactory实例的时候.两个或者更多的hibernate对应同一个数据库的时候就会插入出错.这个时候我们可以选择第二种方式把标识符的生成工作交给底层数据库.还有一个小知识点要注意就是oid必须定义为long,int,short类型,如果定义为byte会报异常,这里推荐用long. 总结一下,这7种生成oid标识符的方法,increment 比较常用,把标识符生成的权力交给hibernate处理.但是当同时多个hibernate应用操作同一个数据库,甚至同一张表的时候.就推荐使用identity 依赖底层数据库实现,但是数据库必须支持自动增长,sequence 以来底层数据库实现,但是数据库必须支持系列.hilo 根据特定的表实现.这三种方式(increment/identity/sequence)当然是针对不同的数据库选择不同的方法.如果你不能确定你使用的数据库具体支持什么的情况下.可以选择第三种(sequence).或者用native 让hibernate来帮选择identity、sequence、hilo.后边的自然主键(asigned)不推荐使用,学生 班级 多对一映射实现(单向)在学生映射文件中配置!-- name=c Student 班级 对象 column=c_id 外键 class=Class 班级类 --many-to-onename=ccolumn=c_idclass=Class/many-to-one在many-to-one这端,cascade 默认是”none”,假如我们希望在持久化多的一端的时候,自动级联保存和更新一的一端,我们可以把 cascade 设置成”save-update”;all : 所有情况下均进行关联操作。 save-update + deletenone:所有情况下均不进行关联操作。这是默认值。 save-update:在执行save/update/saveOrUpdate时进行关联操作。 delete:在执行delete时进行关联操作。学生 班级 多对一映射实现(双向)!-- 1对多的关系 --set name=studentskey column=c_id/keyone-to-many class=Student//setinverse属性inverse属性默认是false的,就是说关系的两端都来维护关系。inverse=true时,那就代表关系是由另一端来维护的cascade 和inverse 的区别 cascade 实现级联inverse 控制2端的维护关系一对多双向自身关联关系映射!--多对1 --many-to-onename=productcolumn=p_idclass=Productcascade=save-update/many-to-one!--1对多 --setname=productskeycolumn=p_id/keyone-to-manyclass=Product//setHibernate 中四种对象状态临时状态(transient):刚用 new 语句创建,还没有被持久化,并且不处于 Sesss

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档