当前位置: 代码迷 >> Java Web开发 >> 上面是JSP项目中,hibernate技术中的一个代码,帮忙说说这个代码是做什么用的
  详细解决方案

上面是JSP项目中,hibernate技术中的一个代码,帮忙说说这个代码是做什么用的

热度:3566   发布时间:2013-02-25 21:06:40.0
下面是JSP项目中,hibernate技术中的一个代码,帮忙说说这个代码是做什么用的
package cn.myexam.hibernate;

import javax.naming.Context; 
import javax.naming.InitialContext; 
import javax.naming.NamingException
import javax.servlet.ServletException

import org.hibernate.HibernateException;

import org.apache.struts.action.ActionServlet; 
import org.apache.struts.action.PlugIn; 
import org.apache.struts.config.ModuleConfig; 


public class InitHibernate implements PlugIn { 

private Context ctx; 

public void destroy() {

if (ctx != null) { 
try { 

ctx.unbind("HibernateSessionFactory"); 
} catch (NamingException e) { 
e.printStackTrace(); 


if (HibernateSessionFactory.getSessionFactory() != null) { 
try { 

HibernateSessionFactory.getSessionFactory().close(); 
} catch (HibernateException e) { 
e.printStackTrace(); 






public void init(ActionServlet servlet, ModuleConfig config) 
throws ServletException { 
try { 

HibernateSessionFactory.rebuildSessionFactory();

if(HibernateSessionFactory.getSessionFactory()!=null)
System.out.println("SessionFactory has be successfully builded!");
} catch (HibernateException ex) { 
throw new RuntimeException
"Exception building SessionFactory: " + ex.getMessage(), 
ex); 


try { 

ctx = new InitialContext(); 

ctx.bind("HibernateSessionFactory", HibernateSessionFactory.getSessionFactory()); 
} catch (NamingException ex) { 
throw new RuntimeException( 
"Exception binding SessionFactory to JNDI: " + ex.getMessage(), 
ex); 


帮忙详细说说每个函数是做什么用的
public void init(ActionServlet servlet, ModuleConfig config) //这个方法重新绑定一个HibernateSessionFactory到上下文中
throws ServletException { 
public void destroy() {//这个方法销毁HibernateSessionFactory

if (ctx != null) { 
try { 
ctx.unbind("HibernateSessionFactory"); //从上下文中解除原来的HibernateSessionFactory如果存在的话
} catch (NamingException e) { 
e.printStackTrace(); 


if (HibernateSessionFactory.getSessionFactory() != null) { 
try { 

HibernateSessionFactory.getSessionFactory().close(); //关闭原来的HibernateSessionFactory如果存在的话
} catch (HibernateException e) { 
e.printStackTrace(); 




初始化啊,destory()销毁当前的HibernateSessionFactory
init()重新实例化一个SessionFactory绑定到jndi上以供使用。这个应该是在写一个过滤器,但是具体哪个方法做什么我也不是很清楚。你可以看一下过滤器相关的知识hibernate链接数据库的工程类
  相关解决方案