我正在开发一个 Java EE 应用程序,使用 Servlet、JSP、JPA、EJB。由于我已经在 Websphere 控制台中配置了一个数据源(Oracle 11g),我想知道我是否必须在我的代码中使用 CMP Entity bean,或者一个简单的无状态会话 bean 和 persistence.xml(使用配置的数据源的 JNDI曾是)。
提前致谢
我正在开发一个 Java EE 应用程序,使用 Servlet、JSP、JPA、EJB。由于我已经在 Websphere 控制台中配置了一个数据源(Oracle 11g),我想知道我是否必须在我的代码中使用 CMP Entity bean,或者一个简单的无状态会话 bean 和 persistence.xml(使用配置的数据源的 JNDI曾是)。
提前致谢
您不必使用 CMP 实体 bean。JPA 是 EJB 实体 bean 的替代品,应该是首选技术(使用 WAS 中配置的数据源的 JNDI)。CMP/BMP 实体 bean 现在是 Java EE 的一个可选部分,并且在 WebSphere Liberty 中不受支持(尽管它们在传统的 WebSphere 中继续受支持,即使在 v9.0 中也是如此)。
此外,您甚至不需要将无状态会话 bean 与 JPA (persistence.xml) 一起使用;您可以直接从您的 servlet 使用 JPA,尽管无状态会话可能是封装数据库访问和提供事务支持的好方法。
请注意,应避免同时使用 CMP 实体 bean 和 JPA (persistence.xml)。您最终会得到两种不同的技术,它们都试图访问(和锁定)数据库行,并且会遇到死锁和/或损坏。