jpa в настольном приложении SWING

Я разрабатываю монофоническое пользовательское настольное приложение с использованием 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.
Спасибо

5
задан George Casttrey 20 September 2011 в 21:39
поделиться