struts和hibernate整合的一种方式(hibernate作为struts插件)

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

把hibernate用到的包全部放进web应用程序的lib里面,然后定义hibernate.cfg.xml,也就是插件的配置信息,如下

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">

<hibernate-configuration>

<session-factory>

<property name="show_sql">false</property>

<property name="use_outer_join">true</property>

<property name="hibernate.dialect">net.sf.hibernate.dialect.MySQLDialect</property>

<property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>

<property name="hibernate.connection.url">jdbc:mysql:///test</property>

<property name="hibernate.connection.username">root</property>

<property name="hibernate.connection.password"></property>

<property name="hibernate.connection.pool.size">20</property>

<property name="session_factory_name">hibernate/session_factory</property>

<!-- Mapping files -->

<mapping resource="/homepage/Artical.hbm.xml"/>

</session-factory>

</hibernate-configuration>

信息很清楚的,就是配置数据库等信息,我们利用jndi来查找SessionFactory,下面是插件程序,HibernatePlugIn.java

import org.apache.struts.action.PlugIn;

import org.apache.struts.action.ActionServlet;

import org.apache.struts.config.ModuleConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletContext;

import net.sf.hibernate.SessionFactory;

import net.sf.hibernate.cfg.Configuration;

public class HibernatePlugIn

implements PlugIn {

public void destroy() {

}

public void init(ActionServlet servlet, ModuleConfig config) throws

ServletException {

try {

ServletContext context = servlet.getServletContext();

SessionFactory sf = new Configuration().configure().buildSessionFactory();

context.setAttribute("net.sf.hibernate.SessionFactory",sf);

}

catch (Exception ex) {

ex.printStackTrace();

}

}

}

相应的,要在struts-config.xml配置插件信息,大概如下,注意路径

<plug-in className="homepage.HibernatePlugIn">

<set-property property="configFilePath" value="/WEB-INF/classes/hibernate.cfg.xml" />

<set-property property="storeInServletContext" value="true" />

</plug-in>

以后就可以利用java.naming.Context,java.naming.InitiaContext来查找

Context ct = new InitialContext();

sessions=(SessionFactory) ct.lookup("hibernate/session_factory");

session=sessions.openSession();

当然,还有另外两种整合方式,我认为这种方法更为灵活,也比较容易掌握

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航