Ofbiz引擎之实体引擎(二)--配置参数

本文介绍了Ofbiz的实体引擎,包括它如何通过XML配置文件屏蔽数据库访问细节,支持多种数据库,以及其GenericValue对象的独特之处。详细讲解了Entityengine.xml的配置参数,如Transaction-factory、Connection-factory等,并阐述了实体类型如标准实体、视图实体和扩展实体的定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介:

1、entityengine屏蔽了数据库的很多访问细节,通过xml配置文件定义描述实体,实体引擎自动维护实体至数据库的所有细节.

2、支持主流数据库,

3、ORM最大的不同在于ofbiz只有一个GenericValue对象,不想其他ORM框架,要定义各种不同类型的对象.防止产生过多的实体对象,避免产生类爆炸.

4、OfbizGenericValue对象不想ORM定义的实体对象,它没有gettersetter方法,全部通过put(key,value)的形式来设置属性值.保持最大的灵活性.

 

二、Entityengine.xml

1、属性描述

l Transaction-factory:定义使用JTA事务处理工厂.

l Connection-factory:定义数据库连接池的工厂类

l Entity-model-reader:实体模型reader

l Entity-group-reader:实体组reader

l Entity-eca-reader:实体ECA事件reader

l Entity-data-reader:实体数据reader

l Fild-type:数据库字段到java字段的映射类型

 

2datasource配置数据源,可以配置多个数据源

属性名称

必须

描述

Name

Y

数据源名称

Helper-class

y

数据源访问类型,一般为org.ofbiz.entity.datasource.GenericHelperDao.若自定义需实现org.ofbiz.entity.GenericHelper接口

Field-type-name

n

之前定义的字段类型映射

Schema-name

n

数据库中使用的Schema-name

Check-on-start

n

启动时是否检查数据源,默认为true

Add-mission-on-start

n

启动时添加默认的实体或属性,默认为false

Use-forergn-keys

n

是否针对”one”relationships使用或创建外键,默认为true

Use-forergn-key-indices

n

使用外键是否加索引,默认为true

Use-fk-intially-defered

n

常用来指定是否在创建外键时启用INITIALLY DEFERRED 可用选项,该选项多数数据库支持,但非所有数据库支持,当启用该特性时,外键直到事务提交时才进行检测,否则外键会在事务提交之前进行检测,默认为true

Join-style

n

指定在进行试图实体操作时表连接语法,许多数据采用ANSI

Use-binary-type-for-blob

N

blob数据是否使用,默认为true

Inline-jdbc

Y

jdbc的配置连接

 

三、实体类型及定义

1、标准实体Entiey:实体引擎中的模型基本单元,一个实体唯一对应数据库中的一个表

entity属性

名称

必须

描述

Entity-Name

y

实体名称

Table-name

n

实体对应表名

Package-name

y

实体对应包名

Depentent-on

n

实体依赖的父实体(用于表示层级)

Enable-lock

n

是否启用乐观锁,默认为false

No-auto-stamp

n

是否不自动创建时间戳,若这是为true,不会创建lastUpdateStamp,lastUpdatedTxStamp,createdStamp,createdTxStamp这四个字段,默认为false

Nevel-cache

n

是否从不启用实体缓存,默认为false

Title

n

标题

Copyright

n

版权

Author

n

作者

Version

n

版本

entity子元素

名称

出现次数

描述

Description

0/1

实体描述信息

Field

1/多次

用于定义实体的属性

Prim-key

0/多次

定义哪些field为主键

Relation

0/多次

定义实体之间的关系

field属性

名称

必须

描述

Name

Y

对应java代码中的属性名称

Col-name

N

与之对应的列名

Type

Y

属性类型

field子元素

元素名称

出现次数

描述

Validate

0/多次

属于验证调用方法的名称,仅用于webtools中的实体数据的维护

Prim-key属性

属性名称

必须

描述

Field

Y

作为主键的名称

relation属性

属性名称

必须

描述

Type

y

指定实体类型,包括单边关系的基础和是否创建对应的外键,必须是”one”,”one-nofk”,”many”

Title

n

关联的名称

Rel-entity-name

y

关联的实体名称

Fk-name

n

ofbiz中会根据关系名称自动创建外键,但不推荐.建议自己命名外键名称.原因:1、多数数据库对外键和索引的名称最大字符数有限制;2、多数数据库要求外键名称必须在整个数据库中是唯一的

relation子元素

元素名称

出现次数

描述

Key-map

1/多次

用于指定当前实体的的属性和关联实体的属性之间的对应关系。该元素有两个属性,field-namerel-field-name分别用于指定当前实体的属性名称和与之关联的实体的属性名称.

 

2、视图实体View-Entity:由不同的实体标准单元通过关联得到的虚拟实体,类似于数据库中的视图。

entity属性

名称

必须

描述

Entity-Name

y

实体名称

Table-name

n

实体对应表名

Package-name

y

实体对应包名

Depentent-on

n

实体依赖的父实体(用于表示层级)

Nevel-cache

n

是否从不启用实体缓存,默认为false

Title

n

标题

Copyright

n

版权

Author

n

作者

Version

n

版本

entity子元素

名称

出现次数

描述

description

0/1

实体描述

Member-entity

1/多次

声明哪些实体是视图的组成不错

alias

1/多次

声明成员实体的属性别名,用作视图的属性

Member-entity属性

属性名称

必须

描述

Entity-alias

y

成员实体的别名,唯一

Entity-name

Y

成员实体对应的实体定义名称

alias属性

属性名称

必须

描述

Entity-alias

y

成员实体的实体别名

Name

y

属性别名名称

Field

n

成员实体的属性名称

Prim-key

n

指定该alias是否是视图主键的组成部分

Group-by

n

指定该别名属性是否使用结果集分组,默认为false

Function

n

指定一个函数对该alias属性计算汇总相关的信息,要结合group-by一起使用

View-link属性

属性名称

必须

描述

Entity-alias

y

连接来源方的实体别名

Rel-entity-alias

y

连接目标方的实体别名

Rel-optional

n

关联实体的连接方式,true时为外连接,false为内连接,默认为false

View-link子元素

元素名称

必须

描述

Key-map

1/多次

用于指定当前实体的的属性和关联实体的属性之间的对应关系。该元素有两个属性,field-namerel-field-name分别用于指定当前实体的属性名称和与之关联的实体的属性名称.

relation属性

属性名称

必须

描述

Type

y

指定关系类型,包括单边关系的基数和是否创建对应的外键,必须是”one”,”one-nofk”,”many”

Title

n

关系的名称

Rel-entity-name

y

关联实体的名称

Fk-name

n

ofbiz中会根据关系名称自动创建外键,但不推荐.建议自己命名外键名称.原因:1、多数数据库对外键和索引的名称最大字符数有限制;2、多数数据库要求外键名称必须在整个数据库中是唯一的

 

3、扩展实体Extend-Entity:通过扩展实体可以继承并扩展已经存在的实体。

entity的配置相同,只是名称为Extend-Entity

动态实体DynamicViewEntity:在程序中手动创建的实体,一般用于查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值