6

我们的商店中经常出现一个问题,我们最终会得到相同类/实体的 3 或 4 个不同表示。

一个java版本,一个xml版本,一个hibernate版本,一个json版本......你明白了。

显然,这会产生维护问题。

模型驱动架构可能不止于此,但我真正想要的是一个系统,它允许我以一种方式定义一个类或实体一次,然后生成各种表示。(也许我没有使用正确的术语)

当然,这真的不是那么直截了当,因为假设我们有一个 java 对象,我们想将其转换为 JSON 以通过网络发送 - java 对象中的成员之间可能没有精确的 1-1 对应关系到 JSON 中的字段 - 可能会有一些优化,或者其他什么。

我过去看过像 AndroMDA 和 EMF 这样的东西,发现它们要么缺乏要么笨拙。我不知道这些天他们是如何堆积起来的,或者还有什么其他系统。

SO 对 MDA 和/或元数据驱动编程有何看法?这些工具是否已经足够成熟,可以认真考虑?

谢谢。

4

4 回答 4

7

作为Naked ObjectsApache Isis的贡献者,我可以确认@dnellis74 的另一个答案,因为它们都解决了同一事物的多个表示的问题;使用这些框架,您只需编写一次域对象,然后它就会作为持久层自动反映给用户。

当然,(我会这么说,不是吗?)我不同意@dnellis74 的观点,即这些框架鲜为人知的事实意味着它们应该被立即解雇。你应该自己决定。

可能感兴趣的另一点;这两个框架都在实施Restful Objects 规范,该规范旨在通过 RESTful API 自动公开您的域对象,并让您根据需要对其进行皮肤或集成。.NET impl 相当完整,Java impl 有点落后,但即便如此,您也可以查看演示。

至于 MDA,当它第一次被 OMG 嘲讽时,我从一开始就持怀疑态度,以至于我在 TheServerSide 上写了一篇关于它的文章。我想我说得对。

于 2012-03-07T21:06:38.923 回答
2

为了解决您的核心问题,您可以为您的域对象定义一个 Java 类。然后,您可以使用 JAXB 和 Hibernate 注释对类进行注释。这样,您就有了可以以各种表示形式输出的实体(Java 类)的单一定义,用于 JSON 和 XML 的 JAXB,用于持久性的 Hibernate。

于 2012-03-01T20:20:55.187 回答
1

查看裸对象

http://nakedobjects.codeplex.com/

它相当于 apache

http://isis.apache.org/index.html

这两个框架几乎闻所未闻的事实应该回答您的问题恕我直言。我认为以相同对象的不一致表示结束表明您的过程存在缺陷,这不是您应该尝试使用框架解决的问题。

于 2012-03-01T22:34:43.757 回答
1

尽管这是一个老问题,但我想从今天 MDA 的角度来回答它。

标题为“模型驱动架构值得吗?工具的最新技术是什么?”中对您的问题的简短回答?是是的”。

更长的答案是“您需要将开发方法更改为基于 MDA,这需要一些投资,但值得”。

于 2020-03-02T06:59:08.430 回答