1

我们的项目是在 EJB 2.0 中设计的。

我们没有在 BMP EntityBeans 中使用任何类型的 EJB 持久性方法。在 SessionBeans 中,我们通过使用 getEJBXXXXHome() 方法和调用 home.findByPrimaryKey("") 方法来获取 EJB 引用来获取对 EntityHome 对象的引用。然后我们调用 CRUD 操作的实际方法。在 CRUD 操作方法中,我们的人员使用了普通的 JDBC API 方法。

现在我们正在迁移到 EJB3。作为从 EJB 2.0 到 EJB3 迁移的一部分,我将我所有的 BMP EntityBeans 转换为普通的 Java 类,即没有更多的 entitybeans。如果 EJB 容器之前为 entitybeans 维护了一个池,那么它现在就不会存在了。当我在本地机器上测试一笔交易时,它工作正常

我担心的是,它会影响生产中多个线程的性能吗?

现在更改代码后,每次调用都会创建一个 EntityBean 对象。如果在一小时内拨打了 60k 电话,那将影响我的服务器。以前在 EJB 2.0 中如何处理这一问题?有什么方法可以在更改的代码中处理它(即对于普通的 java 类,因为它们不再是 entitybeans 概念)

4

1 回答 1

1

一般来说,反对创建/收集的开销将低于 EJB 容器之前为您的实体所做的任何开销。我怀疑比对象创建开销更大的问题是到数据库的往返。根据您的 EJB 容器配置,容器可能正在优化 JDBC SQL 并可能缓存检索到的数据(与对象缓存无关)。您可能应该设计您的应用程序以尽量减少对数据库的调用并确保您不会执行不必​​要的查询。

最终,我怀疑只有您能够在硬件上的应用程序服务器上评估应用程序的性能。我建议遵循良好的编程实践来避免过分的开销、分析结果并从那里进行优化,而不是预先担心性能。

于 2013-06-07T14:51:54.697 回答