Настраиваемое сохранение в 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, зависит от вас.