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);
}
}
帮忙详细说说每个函数是做什么用的
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);
}
}
帮忙详细说说每个函数是做什么用的
init()重新实例化一个SessionFactory绑定到jndi上以供使用。
try {
ctx.unbind("HibernateSessionFactory"); //从上下文中解除原来的HibernateSessionFactory如果存在的话
} catch (NamingException e) {
e.printStackTrace();
}
}
if (HibernateSessionFactory.getSessionFactory() != null) {
try { HibernateSessionFactory.getSessionFactory().close(); //关闭原来的HibernateSessionFactory如果存在的话
} catch (HibernateException e) {
e.printStackTrace();
} }
}
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()); //绑定前面经过重建的HibernateSessionFactory到上下文中
} catch (NamingException ex) {
throw new RuntimeException(
"Exception binding SessionFactory to JNDI: " + ex.getMessage(),
ex);
}
回去再看看java基础吧