2015-10-04 64 views
0

我正在尝试一种简单的方法在存储库中注入我的EntityManager。我会有副作用吗?CDI + JPA存储库

托管Bean:

@Named 
@SessionScoped 
public class Teste implements Serializable { 

@Inject 
Repository repo; 

} 

@RequestScoped 
public class Repository { 
    @PersistenceContext(unitName="Test") 
    EntityManager em; 

} 

是否可以安全使用这种方法?我很担心这个网络应用程序的多个请求。

+0

取决于一点。什么容器和版本? –

+0

'@ PersistenceContext'注入本身是有道理的。是否将具有较长使用期限的请求范围知识库注入到会话范围的Teste类中?我*认为*这是确定的,因为CDI将注入一个请求范围的代理,即使Teste是会话范围的,它也会为每个请求提供新的存储库。 – wrschneider

+0

@JohnAment,我使用的是Wildfly 8.2,Java 8。 –

回答

1

是否可以安全使用这种方法?我很担心这个网络应用的多个请求 。

对我来说这是一个非常有效的方法。所以我有点好奇为什么@JohnAment说:

这取决于一点点。什么容器和版本?

AFAIK它将不考虑容器的工作。如果我错了,有人能纠正我吗?

+0

我想只有容器的规范实现是错误的,但在这种情况下你可能会遇到更大的问题。 – whitlaaa