Я разрабатываю монофоническое пользовательское настольное приложение с использованием SWING. У меня был небольшой опыт работы с такими приложениями, в которых я использовал java.sql api, и выяснил, что это совсем не удобно ...
В моем новом приложении я пытаюсь использовать 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.
Спасибо