2017-12-19 8 views
-1

私はhibernateとstruts2を統合しようとしています。エラーはありません。しかし、セッションは全く作成されていません。 CustomerAction.javaセッションセッション= sessionFactory.openSession();休止状態で動作していません

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(); 
} 

HibernateListener.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> 

コードは、エラーを与えていないが、データがデータベースに挿入されていません。

答えて

0

Hibernateを使用してStruts2と手動で時間を浪費すること。セッションファクトリを設定する方法や、間違った方法で行っているコンテキストリスナでそれを行う方法を正確に知ることはできません。それ以外の場合は、コードが機能していません。

しかし、Struts2を統合してプラグイン経由で直接休止する方法があります。あなたはthis答えによって提供される例を見ることができます。 Struts2ので

Struts2の全休止 にHibernateとの統合を提供し プラグインやと呼ばれる非公式のプラグインがあります。そこにいる例:

+0

感謝。しかし、私はhttp://www.mkyong.com/struts2/struts-2-hibernate-integration-example/の助けを借りました。上記のコードはこれだけのようです。 –

+0

この回答があなたの投票に役立ち、それを受け入れるならば。 –