Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 其中(哪一层)放置实体查询方法;坚持;方法等。?_Java_Hibernate_Jpa_Ejb - Fatal编程技术网

Java 其中(哪一层)放置实体查询方法;坚持;方法等。?

Java 其中(哪一层)放置实体查询方法;坚持;方法等。?,java,hibernate,jpa,ejb,Java,Hibernate,Jpa,Ejb,我有一个带有一些JPA/Hibernate实体的SEAM应用程序。现在我想知道我的查询、持久化方法应该放在哪里 默认的选择似乎是将它们放在会话bean层中 @PersistenceContext(...) @Inject EntityManager entityManager; 但我想我更愿意在实体本身上使用方法。什么是赞成/反对 可测试性 好吗 表演 是否有人通过实体上的方法而不是会话bean链接到与EntityManager等交互的最佳实践 最好的, Anders我没有使用SEAM的经验,

我有一个带有一些JPA/Hibernate实体的SEAM应用程序。现在我想知道我的查询、持久化方法应该放在哪里

默认的选择似乎是将它们放在会话bean层中

@PersistenceContext(...) @Inject EntityManager entityManager;
但我想我更愿意在实体本身上使用方法。什么是赞成/反对

  • 可测试性
  • 好吗
  • 表演
  • 是否有人通过实体上的方法而不是会话bean链接到与EntityManager等交互的最佳实践

    最好的,
    Anders

    我没有使用SEAM的经验,但是根据我在Java项目中的经验,我发现让bean远离persist方法是最容易的。我们通常做的是:

    • 拥有业务对象的bean(例如“用户”和“设置”)
    • 有一个可以持久化和检索这些bean的DAO层(简单CRUD)
    • 有一个服务层,它知道如何处理bean,甚至可能知道如何构建bean的聚合

    这样,所有内容都非常分离,并且易于进行单元测试。性能通常不是此设置的问题。

    是的,这也是我以前所做的

    一般来说,我认为EJB非常冗长,而且是样板文件,但SEAM实际上有一点帮助,所以这就是为什么在我当前的项目中,只用于查询和持久化的额外会话bean层让我感到恼火的原因。我有一种感觉,如果我能杀死这一层,我可以制作一个相当简洁的应用程序