Я разрабатываю настольное приложение для монофонических пользователей с использованием SWING. У меня был небольшой опыт работы с такими приложениями, в которых я использовал api java.sql и понял, что это совсем не удобно ...
В моем новом приложении я впервые пытаюсь использовать JPA, я прочитал много руководств, которые помогли мне понять почти все, что мне нужно, но не нашел хорошего примера для реальных настольных Java-приложений.
Я подумываю использовать следующую архитектуру, но не знаю, прав ли я ...
я думаю о создании класса MyPersistenceUnit:
public class MyPersistenceUnit {
private static EntityManagerFactory factory;
private static EntityManager entityManager;
public static void initiate(){
factory=Persistence.createEntityManagerFactory("PU_Name");
entityManager=factory.createEntityManager();
}
public static EntityManager getEntityManager() {
return entityManager;
}
public static void close(){
entityManager.close();
factory.close();
}
}
метод initiate () будет вызван первым, а метод close () будет вызываться при закрытии приложения.
Пока приложение работает, все транзакции будут выполняться через экземпляр getEntityManager (), который доступен везде в приложении. Если я правильно понимаю приложения JSE, полученный диспетчер сущностей имеет расширенный контекст персистентности, который будет сохранять все сущности в управляемом состоянии, в то время как диспетчер сущностей не закрывается, и это заставило меня так думать ...
Я не знаю, упустил ли я что-то, поэтому я буду благодарен за любые чаевые
Обратите внимание, что я использую поставщика eclipselink со встроенной базой данных derby.
Спасибо