- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hibernate中cascade与inverse属性详解
Hibernate中cascade与inverse属性详解关于Hibernate中 cascade 与 inverse 的理解。
您买的Hibernate书是哪一本呢? 孙卫琴的精通Hibernate,还是 深入浅出Hibernate还是那本。。。
我是两本都买了,总体来说还可以,但是,有的地方讲的比较书面化,比如inverse这属性。
在学习Hibernate的过程中最不好理解的就是这两个属性了。
(我当初学习Hibernate的时候,发现网上介绍这两个属性的文章倒是不少,但是,居然有好多都是转帖。。。还有的就是 照书搬~~-_-!!!)。。。
据个例子:书上说inverse=false时,由主控方维持关系。。。
由于我也是初学者。。。再加上语文水平偏低。。。不理解“维持关系是啥意思”囧~
提示:
(1)如果:您不了解Hibernate的one-to-many或many-to-one的概念。
(2)如果:你不了解Hibernate的“自由态”“持久态”“游离态”的概念。
(3)如果:您不了解Hibernate中的“脏数据”的概念。
(4)如果:您对Hibernate中Session缓存,没有初步了解的话。
(在Hibernate中调用save进行存储数据的时候,并不是马上就对数据库进行insert操作,而是会将其“数据对象(vo)”纳入Hibernate的Session缓存。)
在上面的4条提示中,如果您对其中的某一条,不是很清楚的话。希望请先了解有关知识。
否则,可能您将 “无法或很难”理解 cascade 或 inverse 这2个属性。
首相,cascade 与 inverse 这两个属性,其实是完全不同的两个东西,想要了解他们各自的“用途与区别”,详见如下介绍:
这里有两个表:
(1)class?? (班级表)
相应字段:
cid??? varchar(32) 主键 not-null (班级id)
cname varchar(16)????? not-null (班级名称)??
(2)student (学生表)
相应字段:
sid??? varchar(32) 主键 not-null (学生id)
sname varchar(16)????? not-null (学生姓名)
class_id varchar(32)?? not-null (学生所属班级)
一个班级(class)对应多个学生(student),所以班级表(class)就是“one-to-many”端
反之student就是many-to-one
//--------Class类的代码--------
public class Class implements.....
{
private cId = ;
private cName = ;
private students = java.util.HashMap();
// 省略对应的 geter setter
}
//--------Class.hbm.xml--------
hibernate-mapping
class name=lcx.vo.Class table=class
?? catalog=demo
?? id name=cid type=java.lang.String
??? column name=cid length=32 /
??? generator class=uuid.hex /
?? /id
?? property name=name type=java.lang.String
??? column name=cname length=16 not-null=true /
?? /property
??
?? set name=students table=student cascade=save-update
??? key column=class /
??? one-to-many class=lcx.vo.Student /
?? /set
/class
/hibernate-mapping
//--------Student类的代码;*******
public class Student implements.....
{
private sId = ;
private sName = ;
private Class class = null;
// 省略对应的 geter setter
}
// Student.hbm.xml
hibernate-mapping
class name=lcx.vo.Student table=student catalog=demo
?? id name=cid type=java.lang.String
??? co
文档评论(0)