1、概述
entity engine和常见的ORM有一点很大的不同,他的mapping object只有一个 GenericEntity,称它的entity engine 为adaptive object model更为合适一些,是一种比较灵活,代码量非常少的独特的持久化方案。使用entity engine做的项目和其他的ORM相比有一个很明显的特征:非常少的对象
基于Entity Engine 对数据库进行建模完全屏蔽了各种数据库的差别,可以支持从MySql到Oracle几乎所有的关系数据库
Entity Engine提供了简单有效的数据建模方式,通过简单的XML文件来描述实体,不需要写任何代码就能实现实体的创建,存储,删除,查找,排序,再也不需要写任何代码就能实现实体的创建,存储,删除,查找,排序,再也不需要编写和维护数据持久化的代码,通过JDBC支持任意种类的数据库
1.1 实体引擎的概念
DataSource:数据源,在一个数据库实体中可以有多个数据库schema,不同的schema覆盖各自的实体。数据源定义和配置在entityengine.xml中
Entity Delegators:实体代理,使用实体代理来访问数据库
例:framework/entity/config/entityengine.xml
<delegator name="default-no-eca" entity-model-reader="main" entity-group-reader="main" entity-eca-reader="main" entity-eca-enabled="false" distributed-cache-clear-enabled="false"> <group-map group-name="org.ofbiz" datasource-name="localderby"/> <group-map group-name="org.ofbiz.olap" datasource-name="localderbyolap"/> <group-map group-name="org.ofbiz.tenant" datasource-name="localderbytenant"/> </delegator>
Entity Group:就是在组名下的一组实体,组名用来指示实体代理类确定这些实体使用哪个数据源
实体定义
例:applications/product/entitydef/entitymodel.xml
<entity entity-name="ProdCatalog" package-name="org.ofbiz.product.catalog" title="Catalog Entity" default-resource-name="ProductEntityLabels"> <field name="prodCatalogId" type="id-ne"></field> <field name="catalogName" type="name"></field> <field name="useQuickAdd" type="indicator"></field> <field name="styleSheet" type="url"></field> <field name="headerLogo" type="url"></field> <field name="contentPathPrefix" type="long-varchar"></field> <field name="templatePathPrefix" type="long-varchar"></field> <field name="viewAllowPermReqd" type="indicator"></field> <field name="purchaseAllowPermReqd" type="indicator"></field> <prim-key field="prodCatalogId"/> </entity>
1.2实体类型
entity:标准实体,是MVC架构中的模型(MODEL)的基本单元;简单的说,就是一个数据库表。
view-entity:视图,通常是成员实体通过一系列关系连接起来的集合
extend-view:扩展实体,实体能够通过<extend-entity>元素来扩展
2.1标准实体(entity)
属性:
entity-name: 实体名table-name:表名package-name:包名default-resource-name:缺省资源文件名dependent-on:指定父级实体和依赖的实体,仅用来指定层次化实体结构sequence-bank-size:序列号步长enable-lock:是否在这个实体上使用优化锁
子元素:
description:说明field:字段prim-key:主键relation:关系copyright:版权index:索引
例:framework/security/entitydef/entitymodel.xml
<entity entity-name="UserLogin" package-name="org.ofbiz.security.login" title="User Login Entity"> <field name="userLoginId" type="id-vlong-ne"></field> <field name="currentPassword" type="short-varchar"></field> <field name="passwordHint" type="description"></field> <field name="isSystem" type="indicator"></field> <field name="enabled" type="indicator"></field> <field name="hasLoggedOut" type="indicator"></field> <field name="requirePasswordChange" type="indicator"></field> <field name="lastCurrencyUom" type="id"></field> <field name="lastLocale" type="very-short"></field> <field name="lastTimeZone" type="id-long"></field> <field name="disabledDateTime" type="date-time"></field> <field name="successiveFailedLogins" type="numeric"></field> <field name="externalAuthId" type="id-vlong-ne"> <description>For use with external authentication; the userLdapDn should be replaced with this</description> </field> <field name="userLdapDn" type="id-vlong-ne"> <description>The user's LDAP Distinguished Name - used for LDAP authentication</description> </field> <prim-key field="userLoginId"/> </entity>
2.2视图(view-entity)
属性:
entity-name:实体名package-name:包名dependent-on:依赖关系default-resource-name:缺省资源名never-cache:从不缓存auto-clear-cache:自动清除缓存title:标题copyright:版权author:作者version:版本
子元素:
description:说明member-entity:成员实体alias-all:所有别名alias:别名view-link:试图连接relation:关系
例:applications/party/entitydef/entitymodel.xml
<view-entity entity-name="PartyAndUserLogin" package-name="org.ofbiz.party.party" title="Party and Contact Mech View Entity"> <member-entity entity-alias="PTY" entity-name="Party"/> <member-entity entity-alias="ULN" entity-name="UserLogin"/> <alias entity-alias="PTY" name="partyId"/> <alias entity-alias="PTY" name="partyTypeId"/> <alias entity-alias="ULN" name="userLoginId"/> <alias entity-alias="ULN" name="currentPassword"/> <alias entity-alias="ULN" name="passwordHint"/> <alias entity-alias="ULN" name="enabled"/> <alias entity-alias="ULN" name="disabledDateTime"/> <alias entity-alias="ULN" name="successiveFailedLogins"/> <view-link entity-alias="PTY" rel-entity-alias="ULN"> <key-map field-name="partyId"/> </view-link> <relation type="one-nofk" rel-entity-name="Party"> <key-map field-name="partyId"/> </relation> <relation type="one-nofk" rel-entity-name="UserLogin"> <key-map field-name="userLoginId"/> </relation> </view-entity>
2.3扩展试图(extend-entity)
属性:
entiy-name:实体名
子元素
field:字段
relation:关系
index:索引
例:applications/party/entitydef/entitymodel.xml
<extend-entity entity-name="UserLogin"> <field name="partyId" type="id"></field> <relation type="one" fk-name="USER_PARTY" rel-entity-name="Party"> <key-map field-name="partyId"/> </relation> <relation type="one-nofk" rel-entity-name="Person"> <key-map field-name="partyId"/> </relation> <relation type="one-nofk" rel-entity-name="PartyGroup"> <key-map field-name="partyId"/> </relation> </extend-entity>
3、GenericValue对象
一个GenericValue对象就是数据库实体的一条记录
4、创建、更新、删除、数据库记录
4、1创建实体
1、获取GenericValue实体对象
OFBiz中提供了多种获取实体对象的方式,推荐使用下面的方式
GenericValue tempValue = delegator.makeValue("EntityName");
4、2更新实体
4、3删除实体
5、几种取数据库记录
5.1几个常用的查询方法
通过主键查询:public GenericValue findByPrimaryKey(String entityName,Map<String ,? extends Object> fields)
指定字段(and组合)查询:public List<GenericValue> findByAnd(String entityName,Map<String,? extends Object> fields)
条件查询:public List<GenericValue> findList(String entityName,EntityCondition entityCondition,Set<String> fieldsToSelect,List<String> orderBy,EntityFindOptions findOptions,boolean useCache)
查询列表:public List<GenericValue> findList(String entityName,EntityCondition entityCondition,Set<String> fieldsToSelect,List<String> orderBy,EntityFindOptions findOptions,boolean useCache)
参数说明:
String entityName:要查询及记录的实体
EntityCondition entityCondition :限制获取的条件
Set fieldsToSelect :返回记录获取的字段,null为全部
List orderBy :排序字段,null为排序
EntityFindOptions findOptions 查找选项
boolean useCache 是否使用缓存
6、动态视图实体
DynamicViewEntity 动态视图
EntityCondition条件
EntityFunction 函数
EntityOperator 操作
EntityFindOptions 查询选项
EntityListIterator 迭代器
相关推荐
apache-ofbiz-16.11.02.zip,ofbiz菜鸟笔记,Apache+OFBiz+开发初学者指南.chm
### Apache OFBiz Cookbook 知识点解析 #### 一、Apache OFBiz 概述 - **定义**:Apache OFBiz(Open For Business)是一款开源的企业级应用框架,它集成了ERP(企业资源规划)、CRM(客户关系管理)以及E-...
### Apache OFBiz 开发入门教程知识点汇总 #### Apache OFBiz 概述 - **社区驱动的开源项目**:Apache OFBiz 是一个完全免费且由社区维护的开源项目。 - **功能强大**:作为最佳电子商务与企业资源规划(ERP)软件...
实体则代表业务对象,如产品、订单和客户,它们的定义存储在数据库模型中,并通过实体引擎进行操作。 在Ofbiz中,工作流系统允许定义和自动化业务流程,而事件处理系统则用于响应各种内部或外部事件,如定时任务或...
Apache OFBiz 是用于企业流程自动化的开源产品,包括 ERP(企业资源规划)、CRM(客户关系管理)、电子商务/电子商务、SCM(供应链管理)、MRP(制造资源规划)、MMS / EAM(维护管理系统/企业资产管理)的框架组件...
根据给定的文件信息,以下是关于Apache OFBiz开发的知识点: 1. OFBiz介绍与安装:OFBiz是一个开源的企业自动化软件套件,它提供了构建企业应用程序所需的各种功能,比如电子商务、订单处理等。文件中提到了2008年...
在学习Apache OFBiz的过程中,你可以参考提供的"Apache+OFBiz+开发初学者指南.chm"文件,这可能包含了OFBiz的基础知识、安装指南、开发环境的搭建以及基本操作的示例。同时,"OFBiz其它资源.txt"文件可能包含了一些...
Apache OFBiz Datamodel 2
在Ofbiz中,实体引擎是核心组件之一,它负责处理数据模型,提供数据访问和管理功能。本篇文章将深入探讨Ofbiz实体引擎的设计理念、主要功能以及实际应用。 ### 一、Ofbiz实体引擎概述 Ofbiz实体引擎基于Java语言,...
学习Opentaps和Ofbiz的经典入门!
OFBiz Datamodel 作为其核心组成部分之一,负责定义和存储业务数据结构。本篇文章将详细介绍 Apache OFBiz Datamodel 4 的主要概念和关键组件。 #### 二、Datamodel 构建元素解析 **1. InvoiceTypeAttr** - **...
OFBiz是一个非常著名的电子商务平台,是一个非常著名的开源项目,提供了创建基于最新J2EE/XML规范和技术标准,构建大中型企业级、跨平台、跨数据库、跨...包括实体引擎, 服务引擎, 消息引擎, 工作流引擎, 规则引擎等。
- **工作流引擎**:OfBiz内置了工作流引擎,用于处理复杂的业务流程,如审批流程、订单处理流程等。 - **集成层**:支持与其他系统(如支付网关、物流系统)的集成,通过Web服务或API接口实现。 **4. 图形化架构图...
Apache OFBiz Datamodel 3 通过这些详细的实体和属性定义,为电子商务、供应链管理等领域提供了坚实的数据基础。它不仅有助于提高效率和准确性,还能够适应不同业务场景的需求变化,为企业提供了一套完整的解决方案...
ApacheOFBiz:registered: 欢迎使用ApacheOFBiz:registered: ! 一个功能强大的顶级Apache软件项目。 OFBiz是用Java编写的企业资源计划(ERP)系统,并包含大量库,实体,服务和功能,以运行您的业务的各个方面。 ...
Apache+OFBiz+开发初学者指南.rar OFBiz开发快速入门.rar OFBiz-技术文档.rar OFBiz API中文版.rar Apache OFBiz Cookbook Sep 2010.rar Opentaps widget使用说明.rar OFBiz.Development.2008.rar Groovy中文...