hibernate - Flex Hibernate使用 Flex/Mate/和BlazeDS设置EntityManager和 SessionFactory

  显示原文与译文双语对照的内容
0 0

我正在创建一个使用 Mate,Blaze,Tomcat服务器的Flex项目。 所有这些似乎都在工作。 连我的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都需要初始化自身,在时间上创建相当的延迟,等待所有的intialize 。 2.我阅读了hibernate的SessionFactory文档:

我们还建议在 static 初始化器块中使用一个小包装类来启动 Hibernate,称为 HibernateUtil 。 你可能已经在 Hibernate 文档的其他区域中以各种形式看到此类。

现在我有了关于如何编写类的文档,但是在 flex/java文件格式中将放置它。 当前在我的Java文件结构中: to tms-放置第一级服务材料- 设置pojo的材料需要设置,因为我注意到每次有一个函数,然后关闭它。

更一般的问题是,如何以优化的方式设置SessionFactory和 EntityManager?

先谢谢了。

托德

时间: 原作者:

0 0

你使用的是 Spring Framework? 如果没有,我建议你认真考虑。

它提供了集成,以及 Hibernate插件和JPA集成。 你可以在上下文中定义所有内容,让 spring Bootstrap 为你。 EntityManager实例将直接注入到你的服务/dao中。

原作者:
...