对ofbiz实体定义的认识及webtools功能简介

  在OFBiz中对model的定义配置文件一般放在组件下的entitydef目录下。在该配置文件中通过<entity>节点来配置一个实体并与数据库中的表相对应。entity节点中的entity-name属性用来定义实体的名称,如果实体名称中用的是驼峰法命名,则在数据库中默认映射的时候会在中间自动添加"_",否则需要显式的指定其title属性。而在entity节点下面定义字段的时候如果涉及到驼峰命名的话也会出现类似的情况,可以通过指定其col-name属性来避免ofbiz自动为其添加"_"。

  为了更好的理解<field>节点中type的值,即Java与数据库类型的对应关系,可以查看其type的定义文件,具体在%ofbiz-home%/framework/entity/fieldtype/fieldtypemysql.xml(此处我以mysql数据库为例),其中field-type-def节点下定义了每一种常见的类型及其对应的mysql数据库跟java的类型。之后再返回回来看model定义的配置文件就容易多了。

  type属性的值为之前查看的已经定义好的类型,在真正执行的时候会对应到相应的java类型和数据库类型;

  name属性的值即为字段的名称;

  prim-key节点用来声明主键,注意该节点的field属性值必须在之前定义过;

  relation节点是用来定义关系的,在该节点中的type属性一般有三种类型"one","many","one-nofk"

one、one-nofk的使用条件是被关系实体的rel-field-name为主键;

many的使用条件是被关系实体的rel-field-name为非主键;

而one 与 one-nofk 的区别在于one会在数据库表结构中创建外键约束,而one-nofk 则不会; 

  fk-name属性用来定义外键的名称;

  rel-entity-name用来定义被引用的实体的名称;

扫描二维码关注公众号,回复: 608950 查看本文章

  title属性用来给该关系起别名;

  relation节点下面的key-map节点来定义关系实体的字段信息,field-name属性用来定义关系实体的外键字段,rel-field-name用来定义被关系实体的字段,如果关系实体的字段跟被关系实体的字段相同的话rel-field-name属性可以省略。

webtools中的功能

1.通过“浏览组件”选项可以看到已加载的组件信息,一目了然的看到每个组件的名称、物理路径、访问路径以及该组件下所包含的应用名称及其物理路径。

2.通过“标签管理”选项可以看到所有组件中在config目录下的标签配置文件都被加载进去,点击查找之后可以看到该标签配置文件中的所有标签名及其各种语言对应的值。

3.通过“实体数据维护”选项可以看到已加载到的所有的实体,通过右边的新建,关系,找,全部查看到所有有关实体的详细信息甚至每个域所对应的java类型和数据库类型。

4.通过“实体引用-INTERACTIVE”选项可以看到类似于JAVA  API似得界面,左侧显示所有的实体包,右侧则是实体引用图表,可以看到全部实体信息。很详细的列出了每个实体的名称,映射到数据库里面的名称,每个域的Java名称,数据库名,域类型,Java类型,SQL类型。最后还有该表所包含的索引名称。

5.通过“实体引用图表”某个实体旁边的“人工程序信息”选择进入会看到该实体被定义的物理路径,实体所包含的域,关系,更加可以方便的看到用到该实体的所有服务,Forms和Screens。

6.通过“实体SQL处理程序”,可以在指定组中写固定的sql命令(即SQL语句),点击提交按钮就可以实现SQL语句的执行,类似于数据库的工作台一样。

7.通过“性能测试”选项,可以自行去调用增删改查以及根据缓存查找,常用的new HashMap,UtilMisc.toMap,UtilCache.get(String),UtilCache.get(GenericPK),UtilCache.put(GenericPK)等操作,最后把统计结果以列表的方式显示出来。

8.通过“服务引用”选项进入服务列表,因为服务比较多,可以根据服务名的首字母来进行筛选服务或者根据组件名来筛选。通过点击服务名来选择查看该项服务的具体信息。

9.通过“自启动以来的服务器统计”选项进入自启动以来的服务器统计页面,可以看到请求统计,事件统计,浏览统计等详细信息。

猜你喜欢

转载自qiangjiyi.iteye.com/blog/2097463