为什么我们需要持久性课程?

2020-08-16 00:27发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


尊敬的OO专家,

我刚刚完成了"持久性对象"一章的"持久性对象"一章,作者是Horst Keller。

我真的很感激 它的实用程序。 用Google搜索了一下,在SCN上读了一些博客,但该实用程序仍然模糊不清。

我想知道持久性类相对于Open SQL的优势是什么。

BR,

苏哈斯

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


尊敬的OO专家,

我刚刚完成了"持久性对象"一章的"持久性对象"一章,作者是Horst Keller。

我真的很感激 它的实用程序。 用Google搜索了一下,在SCN上读了一些博客,但该实用程序仍然模糊不清。

我想知道持久性类相对于Open SQL的优势是什么。

BR,

苏哈斯

付费偷看设置
发送
6条回答
Climb_Ma
1楼 · 2020-08-16 00:34.采纳回答

我想知道持久性类比Open SQL有什么优势。

让我们首先从SAP关于[持续性服务| http://help.sap.com/saphelp_nw70ehp2/helpdata/zh-CN/f5/a36828bc6911d4b2e80050dadfb92b/frameset.htm ]:

Persistence Service使ABAP程序员能够以面向对象的方式处理关系数据库数据。

所以我们在这里谈论的是[ORM | http:// zh.wikipedia.org/wiki/Object-relational_mapping ]框架。 即 数据的永久存储是通过[relational database | http://en.wikipedia.org/wiki/Relational_database ],其中数据模型不是面向对象的。 假设您已经创建了一个销售订单类,并且想要存储和检索销售订单对象(即此类的特定实例)。 如果您有关系数据库,则必须为代表您的销售订单类的相应模式建模,然后将翻译从数据库表"手工编码"到销售订单对象,反之 反之亦然。

现在想象一个您拥有一个不错的ORM的世界,它可以为您完成工作。 例如。 看看像[grails | http://www.grails.org /]这样的网络框架 大量使用[常规配置] | http://en.wikipedia.org/wiki/ Convention_over_configuration ],它使您可以轻松地从您的对象生成数据库表示形式(无需大量的编码/工作!)。 从本质上讲,您可以从类定义开始,定义一些属性,然后框架(ORM)会自动为您生成相应的数据库表。

与SAP进行对比(请参见[关于持久性类的映射助手| http://help.sap.com/saphelp_nw70ehp2/helpdata/zh-CN/d9/b84508bc9411d4b2e80050dadfb92b/frameset.htm ]):

您可能必须在ABAP词典中为对象模型创建新的数据库表,数据库视图或结构。 目前,系统无法自动执行此功能。

因此,一般而言,ORM应该通过提供一种将对象转换为(关系)数据库表的框架来简化开发人员的工作。 但是,有时自动转换/生成以及默认的访问方法并不是最佳选择,因此您实际上要回去编写自己的SQL语句以进行数据库到对象的转换,反之亦然。 因此,SAP 持久性类仍然在后台使用OpenSQL,但是在某些情况下(例如,大量处理),您可能希望自己调整使用的SQL语句...

我为长期旅行深表歉意,但最终,我对持久性类的看法很简单:如果它们使您的生活更简单且编码不太复杂,而又不会造成更大的性能损失,请使用它们-否则请坚持使用手工编码的SQL 声明...(万岁[KISS | http://en.wikipedia.org/ wiki/KISS_principle ]!)????

干杯,哈拉尔德

南山jay
2楼-- · 2020-08-16 00:56

嗨哈拉尔德,

像往常一样,您只是令我敬畏。

我喜欢您的示例"类销售订单,并希望存储和检索销售订单对象(即此类的特定实例)",它给出了关于持久类实例的非常清晰的图景

我对您的SQL v/s持久类持第二观点...谁不喜欢K.I.S.S原理????

希望我能给你20 p * ints????

干杯

Suhas

我是小鹏鹏啊
3楼-- · 2020-08-16 00:35

嗨,

主要优点是,每次使用持久性类时,您都不需要从数据库中获取数据。

因为已经使用SELECT提取了数据。

http://help.sap.com/saphelp_nw2004s/ helpdata/zh-CN/f5/a3682ebc6911d4b2e80050dadfb92b/content.htm

谢谢..

Bunny_CDM
4楼-- · 2020-08-16 00:34

>

>我要迭代的另一点是:ABAP对象中没有持久对象。

错别字...在我的OP中,它应该读为" Persistent Classes"而不是" Persistent Objects"。

感谢指出。

BR,

Suhas

Climb_Ma
5楼-- · 2020-08-16 00:53

我要迭代的另一点是:ABAP对象中没有持久性对象。 从SAP帮助中:

持久对象的持久性服务

从技术上讲,ABAP对象始终是瞬态的,就像ABAP程序中的数据对象一样。 ABAP对象中没有持久对象。 但是,对象服务中的持久性服务允许应用程序开发人员使用持久性对象。 可以将持久性服务视为ABAP程序和数据存储库(即数据库)之间的软件层,它使您可以保存具有唯一标识的对象的属性,然后在需要时再次加载它们

http://help.sap.com/saphelp_nw04/ helpdata/zh_CN/f5/a3682ebc6911d4b2e80050dadfb92b/frameset.htm

关于

Naimesh Patel

nice_wp
6楼-- · 2020-08-16 00:55

我相信持久性类现在与CDS视图/Fiori具有相同的功能,从某种意义上说,它是前身的技术。 它允许您以面向对象的方式保存在数据库中并处理自定义数据模型。

一周热门 更多>