Hibernate的subclass用法_ywy256的博客-程序员秘密

技术标签: java  Struts-hibernate-spring  jbpm  编程  hibernate  class  table  

Hibernate的subclass用法(转自java Eye个人空间)

文章分类:Java编程

 看到jBPM中大量使用了subclass的用法,应该说这个是比较OO的,设计的非常合理。
  (一)、首先先去看看Hibernate的subclass:
  1.对于“每一个类继承树对应一个表”的策略来说,就需要使用<subclass>定义。
  <subclass>
            name="className"  //子类的全名
            discriminator-value="discriminator-value" //辨别标识,一个用于区分每个独立的子类的值
            proxy="proxyInterface" //指定一个类或接口,在延迟加载时作为代理使用
            lazy="true|false"
            dynamic-update="true|false"
            dynamic-insert="true|false"
            entity-name="entityName"
            node="element-name">
           <property ..../>
          ......
        </subclass>
  2.每个子类都应该定义它自己的持久化属性和子类。<version>和<id>属性可以从根父类继承下去。在一棵继承树上的每个子类都必须定义一个唯一的discriminator-value。如果没有指定,就会使用Java类的全限定名。
  3.必须在子类的影射中指定extends属性来指定已影射的超类。

 (二)在jBPM中的使用
  1.在jBPM的definition组的类机构中就采用上述的技术。其中ModuleDefinition是作为抽象父类存在的,而 ContextDefinition、FileDefinition、LoggingDefinition、SchedulerDefinition、 MgmtDefinition类是做为subclass存在的。
 2.在父类中使用了discriminator鉴别器的技术:在继承策略中的“一个对象继承树应对应一个表”的策略中,<discriminator>元素是必须的。鉴别器字段包含标志值,用于告知持久层应该为某个特定的行创建哪一个类别的实例。例如:
  父类的影射片段:
    <discriminator type="char" column="CLASS_"/>
    <!-- M : org.jbpm.module.def.ModuleDefinition -->
    <!-- C : org.jbpm.context.def.ContextDefinition -->
    <!-- F : org.jbpm.file.def.FileDefinition -->
    <!-- L : org.jbpm.logging.def.LoggingDefinition -->
    <!-- I : org.jbpm.scheduler.def.SchedulerDefinition -->
    <!-- T : org.jbpm.taskmgmt.def.TaskMgmtDefinition -->
    <!--  :  -->
    <!--  :  -->
 3.鉴别器字段的实际值是根据<class>和<subclass>元素中的discriminator-value属性得来的。
 例如:
  父影射文件:
  <class name="org.jbpm.module.def.ModuleDefinition"
         table="JBPM_MODULEDEFINITION"
         abstract="true"
         discriminator-value="M"
         lazy="false">
       子影射文件:
  <subclass name="org.jbpm.context.def.ContextDefinition"
            extends="org.jbpm.module.def.ModuleDefinition"
            discriminator-value="C"
            lazy="false">
       </subclass>
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ywy256/article/details/5637841

智能推荐

javascript禁止复制粘贴_温柔晨光的博客-程序员秘密

// 禁止右键菜单document.oncontextmenu = function(){ return false; };// 禁止文字选择document.onselectstart = function(){ return false; };// 禁止复制document.oncopy = function(){ return false; };// 禁止剪切document....

cuda 原子锁&多线程操作&通用原子操作_atomicexch_Limiao_123的博客-程序员秘密

经历了很多奇奇怪怪的bug,整理一下。先描述要做的事情以及怎么做:在项目中,空间中有200w+的点,需要映射到一个grid_map的600*600的网格中,落入到同一个格子的点需要进行一些计算获得一个值。对于格子与格子之间是并行的,但格子之中的点需要设计为串行。所以在计算某个格子中的点时,需要将格子的值保护起来,只允许一个线程(点)计算并改变。这里就用到了cuda的通用原子操作。也许有人会问,cuda提供了一些原子操作函数,能不能直接用呢?cuda提供的原子函数适用于简单的单一变量判断加减,而对于需要复

练习:压缩字符串和逆序英文语句_压缩英文句子_三杯白开水的博客-程序员秘密

压缩字符串aaaabbbbcdefffffghhhh压缩成a4b4cdef4gh4// 压缩字符串// aaaabbbbcdefffffghhhh// a4b4cdef4gh4#include &amp;lt;stdio.h&amp;gt;void yasuo();void yasuo(char *pStr){ int len=0; if(pStr==NULL) return ;...

jqueryui icons图标说明_ui-icon-arrow-1-nw_haiwei_sun的博客-程序员秘密

http://i.80tvb.com/jqueryui-icons-list/在使用jQueryUI的button时真心感叹这东使用起来是多方便的,这里把jQueryUI默认样式里的Icons图标列了出来,以方便需要时查阅。ui-icon-carat-1-n ui-icon-carat-1-ne ui-icon-carat-1

Unity MoveTowards移动到指定位置_会思考的猴子的博客-程序员秘密

其实下面的用 DoTween去实现是很容易的,transform.DOMove(transform.position + mMoveDirection, mMoveSpeed,).SetEase(Ease.Linear).OnComplete(changeMovingState);using UnityEngine;public class Test : MonoBehavi...

oracle ITL(事务槽)的理解_didige5994的博客-程序员秘密

oracle ITL(事务槽)的理解 一、ITL描述:ITL(Interested Transaction List)是Oracle数据块内部的一个组成部分,位于数据块头(block header),itl由xid,uba,flag,lck和scn/fsc组成,...

随便推点

CentOS7使用network-manager无UI连接l2tp_l2tp manager without gui_血如铅汞气凝霜的博客-程序员秘密

安装插件network-manager-l2tp 更换yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bakcurl -O http://mirrors.aliyun.com/repo/Centos-7.repomv Centos-7.repo /etc/yum.repo...

有哪些值得推荐的Python学习网站?_python数据分析学习网站_秃头雨雨的博客-程序员秘密

我想学习如何使用 Python 制作网站。但是 Python 学习资源要我花几个月的时间学习语法,然后才能进入我感兴趣的领域。

一天完成把PC网站改为自适应!原来这么简单!_weixin_34306676的博客-程序员秘密

http://www.webkaka.com/blog/archives/how-to-modify-a-web-page-to-be-responsive.html 一天完成把PC网站改为自适应!原来这么简单!作者:Kaka    时间:2015-8-27 11:26:9    浏览:5279    评论:8网站自适应,很多人都认为是很高级需要很多时间去实现的东西,不愿意...

'django-admin' 不是内部或外部命令,也不是可运行的程序 或批处理文件。问题处理_django-admin' 不是内部或外部命令,也不是可运行的程序 或批处理文件。_swordboy_fire的博客-程序员秘密

在windows的cmd中输入django-admin startproject project时报错:'django-admin' 不是内部或外部命令,也不是可运行的程序 或批处理文件。这是因为系统缺少django的环境变量。首先找到Python36-12\Scripts\django-admin.exe的位置然后在环境变量的path中追加django-admin.exe得路径,如“;C...

初识MySQL(非常详细)_北方的南先生的博客-程序员秘密

mySQL简介MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。MySQL是一种关系数据库管理系统,关系数据库将数据保存在不...

推荐文章

热门文章

相关标签