Настраиваемое сохранение в Java EE5+

Существует 2 способа использования единицы сохраняемости: кода или аннотации.

КОД
[..]
EntityManagerFactory emf;
emf = Persistence.createEntityManagerFactory("SOMEPU");
[..]

or

АННОТАЦИЯ
[..]
@PersistenceContext(name = "persistence/LogicalName", unitName = "SOMEPU")
[..]

Вопрос: Если вы хотите изменить единицу персистентности (или указать другой источник jdbc), я могу легко адаптировать версию исходного кода для чтения переменной из какого-либо файла настроек или чего-то еще. Но я не могу помещать переменные в аннотации. Каково решение?

Да, я мог бы всегда оставить один и тот же PU и просто указать ресурс jbdc на сервере приложений в другом месте, но я не хочу, чтобы кто-то возился с настройками администратора AS.

ура Свен


person javadude    schedule 24.07.2009    source источник


Ответы (1)


Если вам абсолютно нужно использовать аннотации для получения вашего 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, зависит от вас.

person Community    schedule 24.07.2009