java - Java EE5+ 中的可配置持久性

标签 java persistence annotations java-ee-5

有两种使用持久化单元的方法,代码或注解。

代码
[..]
EntityManagerFactory emf;
emf = Persistence.createEntityManagerFactory("SOMEPU");
[..]

注释
[..]
@PersistenceContext(name = "persistence/LogicalName", unitName = "SOMEPU")
[..]

问题:如果您想更改持久性单元(或指向不同的 jdbc 源),我可以轻松调整源代码版本以从某些设置文件或其他文件中读取变量。但是我不能将变量放入注释中。解决方案是什么?

是的,我可以始终保持相同的 PU,并将应用程序服务器中的 jbdc 资源指向其他地方,但我不希望任何人在 AS 的管理设置中进行修改。

干杯 斯文

最佳答案

如果您绝对必须使用注释来获取您的 PersistenceContext,那么我猜您可以将 EntityManager 的创建包装在某个类中,然后将其注入(inject)到需要它的 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 由您决定。

关于java - Java EE5+ 中的可配置持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1176520/

相关文章:

java - Jackson 将对象字段误认为是 JsonTypeInfo.Id.NAME

java - 如何使用 Spring+Hibernate 将实体持久化到两个不同的表

java - Kryo 类(class)注册

java.io.FileNotFoundException : the system cannot find the file specified

JAVA - 如何将形状数组保存到桌面上的文件?

c# - 在 Rx 中存储检索 IObservable 订阅状态

persistence - DCI(数据、上下文、交互)持久化示例

通过带注释的查询进行 Django 聚合

ios - 未保存 PDF 注释

java - 从 Liferay 开始,对如何开始有点不知所措