【问题标题】:ORM framework that extends base class with database-implementation使用数据库实现扩展基类的 ORM 框架
【发布时间】:2010-05-25 06:39:17
【问题描述】:

我有一个由客户端/服务器 + 网页组成的游戏。客户端和游戏/网络服务器的核心概念是Account。帐户存储在数据库中,因此我需要一些 ORM,最近查看了 Hibernate 和 Cayenne。

然而,我的理解是,这两个框架都提供了一个"DatabaseBackedAccount"-class,我用我的其他 Account 方法扩展了。我的问题是 Account 类在客户端被大量重用,我显然不想在客户端实现中包含与数据库相关的代码。

我当前的解决方案是拥有一个Account 类(由服务器和客户端共享)并在服务器端使用DatabaseBackedAccount(覆盖setter 方法并提供提交方法)对其进行扩展。我觉得这很自然也很好,但是我必须自己实现所有血腥的 sql-details 和 ORM。

有没有办法在任何现有的 ORM 框架中“扭转局面”,让生成的类扩展我现有的类?

【问题讨论】:

    标签: java orm


    【解决方案1】:

    在 JPA 中(以及在 hibernate 中,但我更了解 JPA),实体类内部没有魔法,它们只是带有注释的 POJO(或通过 xml 配置)。因此,您可以在客户端愉快地使用它们,而不会对服务器端产生任何影响,因为所有的魔法都是通过 EntityManager 接口从外部发生的。

    更笼统地说:不应允许帐户提交自己(就像不应允许创建或删除自己一样),应该有一个服务或 DAO 从外部执行此操作,从而创建可以在客户端和服务器端使用的漂亮干净的 POJO。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-27
      • 2012-05-03
      • 2012-03-22
      • 1970-01-01
      • 2019-12-31
      相关资源
      最近更新 更多