Я создаю проект Flex, используя сервер Mate, Blaze DS, Tomcat. Кажется, все это работает. Даже мои вызовы Hibernate работают. Однако они, похоже, не созданы правильно. Я вхожу в систему со следующим блоком кода в Java:
public AbstractUser login(String username, String password){
//Configuration cfg = new Configuration().configure("hibernate.cfg.xml");
//SessionFactory sessionFactory= cfg.buildSessionFactory();
SessionFactory sessionFactory;
sessionFactory = new AnnotationConfiguration()
.addAnnotatedClass(AbstractUser.class)
.addAnnotatedClass(CourseSession.class)
.addAnnotatedClass(Course.class)
.addAnnotatedClass(Message.class)
.addAnnotatedClass(Material.class)
.addAnnotatedClass(TopicSession.class)
.addAnnotatedClass(Step.class)
.addAnnotatedClass(Section.class)
.addAnnotatedClass(Topic.class)
.addAnnotatedClass(Subtopic.class)
.configure("hibernate.cfg.xml")
.buildSessionFactory();
sessionFactory.openSession();
emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT);
em = emf.createEntityManager();
logger.debug("** username:"+username);
logger.debug("** password:"+password);
Query q = em.createNamedQuery("users.byUnPass");
q.setParameter("username", username);
q.setParameter("password", password);
AbstractUser user;
try{
user = (AbstractUser) q.getSingleResult();
}catch(javax.persistence.NoResultException e){
user = new AbstractUser();
}
return user;
}
Есть две вещи не так с этим подходом
1. entityManager и SessionFactory должны инициализировать себя при нажатии первой кнопки, создавая довольно большой временной интервал, ожидая начала инициализации.
2. Я прочитал документы на SessionFactory в Hibernate:
Мы также рекомендуем небольшой класс-оболочку для запуска Hibernate в статическом блоке инициализатора, известном как HibernateUtil.
Возможно, вы видели этот класс в различных формах в других областях документации Hibernate.
Теперь у меня есть документация о том, как написать класс, но где в моем формате файла flex / java я бы его разместил? В настоящее время в моей структуре файлов Java:
ком
Пегас
tms- места первого уровня Услуги
материалы - размещает материал, который я использую
Кроме того, что необходимо для настройки SessionFactory, чтобы сделать EntityManager быстрым - потому что я замечаю, что когда у меня есть функция, которая открывает EntityManager, а затем закрывает его, для его инициализации требуется задержка во времени.
Более общий вопрос: как я могу настроить мои SessionFactory и EntityManager оптимизированным способом?
Заранее спасибо.
Todd