- 1、本文档共68页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
采用 joined-subclass 元素的继承映射 采用 union-subclass 元素的继承映射 采用 union-subclass 元素可以实现将每一个实体对象映射到一个独立的表中。 子类增加的属性可以有非空约束 --- 即父类实例的数据保存在父表中,而子类实例的数据保存在子类表中。 子类实例的数据仅保存在子类表中, 而在父类表中没有任何记录 在这种映射策略下,子类表的字段会比父类表的映射字段要多,因为子类表的字段等于父类表的字段、加子类增加属性的总和 在这种映射策略下,既不需要使用鉴别者列,也无须使用 key 元素来映射共有主键. 使用 union-subclass 映射策略是不可使用 identity 的主键生成策略, 因为同一类继承层次中所有实体类都需要使用同一个主键种子, 即多个持久化实体对应的记录的主键应该是连续的. 受此影响, 也不该使用 native 主键生成策略, 因为 native 会根据数据库来选择使用 identity 或 sequence. 采用 union-subclass 元素的继承映射 三种继承映射方式的比较 union-subclass subclass joined-subclass 练习3 * hbm2ddl.auto 四个取值的意义: create : 会根据你的model类来生成表,但是每次运行都会删除上一次的表,重新生成表,哪怕2次没有任何改变 create-drop : 根据model类生成表,但是sessionFactory一关闭,表就自动删除 update : 最常用的属性,也根据model类生成表,即使表结构改变了,表中的行仍然存在,不会删除以前的行 validate : 只会和数据库中的表进行比较,不会创建新表,但是会插入新值 * hilo 和 seqhilo生成器给出了两种hi/lo算法的实现第一种情况:id name=id type=id column=idgenerator class=hiloparam name=tablezhxy_hilo_tbl/paramparam name=columnnext_value/paramparam name=max_lo100/param/generator/id第二种情况id name=id type=long column=cat_idgenerator class=seqhiloparam name=sequencehi_value/paramparam name=max_lo100/param/generator/id第二种情况需要sequence的支持,这里只讨论更通用的第一种情况默认请况下使用的表是hibernate_unique_key,默认字段叫作next_hi。next_hi必须有一条记录否则会出现错误。几个简写解释:hi:高值-从数据库取得的那个值lo:低值-hibernate自动维护,取值1到max_lowmax_low:映射文件中配置的那个值那hibernate怎样生成主键呢?1.从数据库中取得hi值,数据库的next_value值加12.hibernate取得lo值(0到max_lo-1循环,lo到max_lo时,执行步骤1,然后lo继续从0到max_lo-1循环)根据下面的公式计算值:hi*(max_lo+1)+lo;例如hi初始为2,max_lo为3生成的值依次是:读取hi为2,写到数据库为32*(3+1)+0=82*(3+1)+1=92*(3+1)+2=102*(3+1)+3=11这有次读写表zhxy_hilo_tbl操作,hi变为3,数据库成为43*(3+1)+0=123*(3+1)+1=13关闭数据库,下次打开时,读取hi值为4,数据库变为54*(3+1)+0=16但是有一种特殊情况,就是hi是0的时候,那么第一个值不是0*(max_lo+1)+0=0而是跳过0,直接就是1 * property name=fullContent formula=(SELECT concat(TITLE, CONTENT) FROM NEWS WHERE ID=ID)/ * * 组成关系中, 整件拥有部件的生命周期, 所以整件删除时, 部件一定会跟着删除. 而且, 多个整件不可以同时共享同一个部件。 映射组成关系 Hibernate 把持久化类的属性分为两种: 值(value)类型: 没有 OID, 不能被单独持久化, 生命周期依赖于所属的持久化类的对象的生命周期 实体(entity)类型: 有 OID, 可以被单独持久化, 有独立的生命周期 显然无法直接用 property 映射 na
文档评论(0)