在这篇博文中,您将了解一种将现有数据模型集成到BOPF中的方法。在一些基础知识之后,将有一个BO的数据访问类示例,该类由两个表组成,其中包含标题和项目的数据。
当将现有开发移到BOPF时,您肯定会面临这样一个事实:应用程序表中已经有一些数据,云服务器主机,并且将有许多开发对象访问该数据库桌子。下一个挑战是该表的键与BOPF创建的表的要求不匹配。由于其他开发引用了旧表和其中的数据,物联网展会,因此无法迁移到由BOPF创建的数据库表。为了解决这个问题,您可以实现一个数据访问类,在框架和数据库之间架起桥梁。
在开始实现之前,让我们考虑一下可能影响实现的一些方面。
如果您查看数据库表的结构,如果你能从头开始设计,你会做些不同的事情吗?如果您的答案是肯定的,那么这是一个完美的起点,数据访问类是一种抽象层,因此您可以自由地进行必要的更改。典型的应该更改的是管理数据。在BOPF中有一个很好的重用功能,节省了实现的工作量。如果你现在不抓住机会,即时通讯云平台,你就永远不会去做。
只有两个原因可以解释为什么你不能重构这个结构。如果您只是在玩弄这个框架,或者您确信永远不会迁移到BOPF生成的表布局,那么就需要这样做。在这些情况下,您将永远保持更高的复杂性(由于映射)。
如果BOPF不是访问数据的唯一开发组件,您应该只使用旧表。如果只有BOPF会访问数据,那么您应该始终使用生成的表来获取框架的最大值。注意表的其余引用。如果直接插入、修改或删除条目,请确保防止并发访问导致不一致。考虑迁移策略中的那些引用,以切换到比读取访问具有更高优先级的bopfapi。
框架总是使用guid来标识实体。您可以选择只在运行时创建这些guid,或者将它们添加到现有的数据库表中。如果您只是在玩弄框架以获得一些经验,那么使用临时guid是可以的。在运行时映射临时guid需要花费时间,而且对于大量活动来说需要消耗资源。更喜欢在数据库表中使用持久guid。填充新字段只是一次努力。
数据访问类的目的是在数据库和框架之间进行调解,并使数据库结构适应您的BOPF BO的节点结构。因此,您永远不应该将任何业务逻辑放入这个类中。此层中发生的错误(通常是数据库错误)肯定会导致当前事务中止。
在使用自己的数据库访问实现时,云购全球,您还负责优化HANA平台的编码。框架无法使用其标准功能进行HANA优化。
您可以选择实现一个数据访问类,为BO的所有节点或一个节点提供数据。在我看来,这取决于您使用临时或持久guid的决定。当使用持久性guid时,为每个节点创建一个类是一个不错的选择,但是如果您使用的是临时guid,则至少需要访问父节点的内部映射表。在这种情况下,我更希望使用一个类来完成BO。
在我们声明实现数据访问类(DAC)之前,您应该熟悉BO专家生成器(事务BOBX)。要熟悉此事务,请使用由Thea Hillenbrand创建的入门指南。
数据模型是一个简单的工具一个。我们有ZDAC\ U HEAD表,其中包含将作为根节点的标题数据,我们有ZDAC\ U ITEM表,其中包含项数据。
这些表可以如下所示:
BOPF模型也很简单。它看起来是这样的。
在本博客中,您将引用以下字典对象:
本博客的附件包含数据访问类的完整源代码。示例BO将使用瞬态guid,因此它将包含此映射的可选编码。为了能够使用数据访问类,您必须切换到事务BOBX的扩展模式。
因此,您将看到数据访问类的一个新字段。
作为命名约定,我建议使用ZCL\name of BO>[\uNode>]\u DAC。要创建类,只需双击。系统将自动检测是否需要创建类。
系统将创建一个具有两个接口的类:
在我的示例中,我将从class/BOBF/CL\u DAC\u实现继承。此类提供了接口方法GET\u实例的现成实现。此方法是静态方法。当使用这个类作为基类时,请确保实现满足您的需求。不能重新定义静态方法。此标准实现将为每个节点返回一个实例。
在实现接口方法之前,物联网平台,我建议创建方法来处理BO的持久结构和数据库表之间的转换。
它们将在方法中用于读取和写入BO数据。
在此方法中,您将执行在数据库上选择以获取符合选择条件的记录的键。您还可以对所选数据执行权限检查。因此,您将返回一个只包含键的表。详细数据将通过read方法获取。要继续的步骤是:
在这种方法中,您将读取钥匙列表的详细数据。如果要实现为多个节点服务的数据访问类,则应该将调用委托给每个节点的专用方法。要继续的步骤是: