我有一个播放应用程序,我正在构建一个应用程序,该应用程序将在前端使用播放框架,但也会有一些“工作节点”,播放将通过 JMS 队列进行通信。
这些工作节点是轻量级的,因此不会运行完整的框架。
我想在播放框架应用程序和工作节点中嵌入相同的模型,以便通过 JMS 轻松传递对象但是要在播放框架中使用 ebean,我需要扩展对象play.db.ebean.Model
,这在工作节点,因为它们没有在游戏中运行。
做这个的最好方式是什么?
我有一个播放应用程序,我正在构建一个应用程序,该应用程序将在前端使用播放框架,但也会有一些“工作节点”,播放将通过 JMS 队列进行通信。
这些工作节点是轻量级的,因此不会运行完整的框架。
我想在播放框架应用程序和工作节点中嵌入相同的模型,以便通过 JMS 轻松传递对象但是要在播放框架中使用 ebean,我需要扩展对象play.db.ebean.Model
,这在工作节点,因为它们没有在游戏中运行。
做这个的最好方式是什么?
Play的play.db.ebean.Model 类只是一个帮助器,它提供了一些有用的方法(save()、update()、delete()...)。他们只是调用 Ebean 的静态方法,例如play.db.ebean.Model
类的 save() 方法实现是:
/**
* Saves (inserts) this entity.
*/
public void save() {
Ebean.save(this);
}
您可以在不继承模型的情况下创建模型对象:
@Entity
public class User {
@Id
private Long id;
@Column
private String name;
// getters and setters
}
但是,如果您不想依赖 Ebean 类,您应该编写包含静态方法的其他类(在 Java EE 世界中也称为“服务”或“DAO”层):
public class UserDAO {
public static Finder<Long,User> find = new Finder<Long,User>(Long.class, User.class);
public static void save(User aUser) {
Ebean.save(aUser);
}
}
然后,您必须将模型对象打包到 JAR 中,并在 Play 和 JMS 系统中添加此依赖项。但是在您的 JMS 系统中,不要忘记向模型对象中导入的 JPA 注释添加依赖关系。