在J2EE Java代码中,我可以看到以下代码
@Stateless
public class PostLabellingDao
{
@PersistenceContext(unitName = "tlga")
protected EntityManager entityManager;
public void loadRecord(String sKey) throws Exception
{
JPAQuery jpaQuery = new JPAQuery(entityManager);
QSomeEntity q = QSomeEntity.someEntity;
List<SomeEntity> oList
= jpaQuery
.from(q)
).list(q);
... // some code on Database
如果我删除@Stateless注释,则该应用程序将继续工作!
使用@Stateless
批注的效用是什么?
我知道@Stateful
与@Stateless
和@Singleton
之间的区别,但是我使用Why?
搜索了关于When?
和@Stateless
的一些解释,以避免在不需要时使用它。
答案 0 :(得分:0)
EJB配置模型是基于例外的配置,因此,当您使用@Stateless或@Stateful或@Singletone注释Bean时,将为该Bean激活许多服务,例如事务,安全性,线程安全性等。不需要这些服务。您一定不能用这些注释来注释bean。
EJB 3在实践中有一些好的建议。例如(您的案件是第三起案件):
1)如果一切都是会话Bean,则由于以下原因会降低性能 容器开销
2)制作实用程序类会话bean并不是很糟糕 有用(实用程序API应该只使用CDI而不是EJB)
3)DAO /存储库类。尽管这些对象依赖线程安全 和交易,它们本身不必是会话bean 因为它们很可能会通过EJB应用程序服务使用 层
4)您不应直接将EJB用作JSF支持的bean