有两种方法可以使用持久性单元,代码或注释。
CODE
[..]
EntityManagerFactory emf;
emf = Persistence.createEntityManagerFactory(“SOMEPU”);
[[]]
或
ANNOTATION
[..]
@PersistenceContext(name =“persistence / LogicalName”,unitName =“SOMEPU”)
[..]
问题:如果您想更改持久性单元(或指向不同的jdbc源),我可以轻松地调整源代码版本以从某些设置文件或其他任何内容中读取变量。但是我不能把变量放到注释中。什么是解决方案?
是的,我可以保持相同的PU,只需将应用程序服务器中的jbdc资源指向其他地方,但我不希望任何人在AS的管理设置中修改。
欢呼声 斯文
答案 0 :(得分:0)
如果您绝对 使用注释来获取PersistenceContext,那么我想您可以将EntityManager的创建包装在某个类中,然后将其注入到需要它的bean中?
public interface MyPersistenceContext
{
public void getEntityManager();
}
然后在你的EJB中:
public class MyEJB
{
@EJB
private MyPersistenceContext persistenceContext;
private EntityManager em;
@PostConstruct
public void postConstruct()
{
em = persistenceContext.getEntityManager();
}
....
您提供的MyPersistenceContext的实现如何创建EntityManager取决于您。