会话会话= sessionFactory.openSession();是不是在休眠

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了会话会话= sessionFactory.openSession();是不是在休眠相关的知识,希望对你有一定的参考价值。

我正在尝试集成hibernate和struts2。没有错误。但是根本没有创建会话。以下是我的代码。 CustomerAction.java

    public String addCustomer(Customer customer) throws Exception{

        //get hibernate session from the servlet context
        SessionFactory sessionFactory =
             (SessionFactory) ServletActionContext.getServletContext()
                     .getAttribute(HibernateListener.KEY_NAME);
        System.out.println("session factory accessed");
        Session session = sessionFactory.openSession();
        System.out.println("session created");

        //save it


        session.beginTransaction();
        System.out.println("Transaction begin");
        session.save(customer);
        session.getTransaction().commit();
}

hibernate listener.Java

    public class HibernateListener implements ServletContextListener{

    private Configuration config;
    private SessionFactory factory;
    private String path = "/hibernate.cfg.xml";
    private static Class clazz = HibernateListener.class;

    public static final String KEY_NAME = clazz.getName();

    public void contextDestroyed(ServletContextEvent event) {
      //
    }

    public void contextInitialized(ServletContextEvent event) {

     try {
         SessionFactory sessionFactory =
                    new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
            System.out.println("session factory created");

            //save the Hibernate session factory into serlvet context
            event.getServletContext().setAttribute(KEY_NAME, factory);
      } catch (Exception e) {
             System.out.println(e.getMessage());
       }
    }
}

在struts.xml

<struts>
  <constant name="struts.devMode" value="false" />

  <package name="default" namespace="/" extends="struts-default">

    <action name="addCustomer"
    class="com.mkyong.customer.action.CustomerAction">
       <result name="success">WEB-INF/pages/customer.jsp</result>
    </action>

      </package>
</struts>

代码没有给出任何错误,但数据库中没有插入数据。

答案

使用Hibernate手动集成Struts2浪费时间。您可能无法确切地知道如何配置会话工厂或在上下文侦听器中执行此操作。在任何其他情况下,您的代码无效。

但是有一种方法可以通过插件直接集成Struts2和hibernate。您可以看到this回答提供的示例。

在Struts2中有一个名为Struts2 Full Hibernate Plugin或的非官方插件,它提供了与Hibernate的集成。有例子:

以上是关于会话会话= sessionFactory.openSession();是不是在休眠的主要内容,如果未能解决你的问题,请参考以下文章

终止会话

为啥我们需要开始会话,会话基本上是啥? [复制]

会话技术

31例程启动后需要会话进行保持吗

当会话 ID 已知但无法启动会话时删除会话变量

SSH会话结束后保持进程运行