使用数据库实现扩展基类的ORM框架

时间:2010-05-25 06:39:17

标签: java orm

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

我的理解是,两个框架都提供了一个"DatabaseBackedAccount" - 类,我用其他Account方法扩展。我的问题是Account类在客户端重用了很多,我显然不希望在客户端实现上包含与数据库相关的代码。

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

有没有办法在任何现有的ORM框架中“转换表”,以便生成的类扩展我现有的类?

1 个答案:

答案 0 :(得分:2)

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

更一般地说:一个帐户不应该被允许自己提交(就像它不应该被允许创建或删除它自己一样),应该有一个服务或DAO从外部做到这一点,从而创建可以在客户端和服务器端使用的漂亮而干净的POJO。