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

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

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

или же

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

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

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

ура Свен

1 ответ

Если вам абсолютно необходимо использовать аннотации для получения вашего PersistenceContext, то, я полагаю, вы могли бы обернуть создание EntityManager в некоторый класс и затем внедрить его в компонент, который требует этого?

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, зависит от вас.

Другие вопросы по тегам