如何与非播放应用程序共享模型

时间:2012-08-29 05:09:54

标签: playframework-2.0

我有一个播放应用程序,我正在构建一个应用程序,它将使用前端的播放框架,但也会有一些“工作节点”,它们将与JMS队列进行通信。

这些工作节点意味着重量轻,因此不会运行完整的游戏框架。

我想在play框架应用程序和worker节点中嵌入相同的模型,以便通过JMS轻松传递对象,但是在play框架中使用ebean我需要让对象扩展{{1}这在工作节点中不起作用,因为它们没有在游戏中运行。

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

Play的play.db.ebean.Model class只是一个帮助器,它提供了一些有用的方法(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世界中也称为“service”或“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注释中。