我正在尝试集成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();
}
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 :(得分:0)
使用Hibernate手动集成Struts2浪费时间。您可能无法确切地知道如何配置会话工厂或在上下文侦听器中执行此操作。在任何其他情况下,您的代码都无效。
但是有一种方法可以通过插件直接集成Struts2和hibernate。您可以看到this回答提供的示例。
在Struts2中有一个名为Struts2 Full Hibernate的非官方插件 提供集成的插件或struts2-s2hibernate 休眠。有例子: