hibernate08--OpenSessionInView
2021-06-20 03:02
阅读:311
YPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
标签:ice needed script get use config http ansi control
创建一个web项目,然后生成HibernateSessionFactory文件!
package cn.bdqn.util; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.cfg.Configuration; /** * Configures and provides access to Hibernate sessions, tied to the * current thread of execution. Follows the Thread Local Session * pattern, see {@link http://hibernate.org/42.html }. */ public class HibernateSessionFactory { /** * Location of hibernate.cfg.xml file. * Location should be on the classpath as Hibernate uses * #resourceAsStream style lookup for its configuration file. * The default classpath location of the hibernate config file is * in the default package. Use #setConfigFile() to update * the location of the configuration file for the current session. */ private static final ThreadLocalthreadLocal = new ThreadLocal (); private static org.hibernate.SessionFactory sessionFactory; private static Configuration configuration = new Configuration(); private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml"; private static String configFile = CONFIG_FILE_LOCATION; static { try { configuration.configure(configFile); sessionFactory = configuration.buildSessionFactory(); } catch (Exception e) { System.err.println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } private HibernateSessionFactory() { } /** * Returns the ThreadLocal Session instance. Lazy initialize * the SessionFactory
if needed. * * @return Session * @throws HibernateException */ public static Session getSession() throws HibernateException { Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) { if (sessionFactory == null) { rebuildSessionFactory(); } session = (sessionFactory != null) ? sessionFactory.openSession() : null; threadLocal.set(session); } return session; } /** * Rebuild hibernate session factory * */ public static void rebuildSessionFactory() { try { configuration.configure(configFile); sessionFactory = configuration.buildSessionFactory(); } catch (Exception e) { System.err.println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } /** * Close the single hibernate session instance. * * @throws HibernateException */ public static void closeSession() throws HibernateException { Session session = (Session) threadLocal.get(); threadLocal.set(null); if (session != null) { session.close(); } } /** * return session factory * */ public static org.hibernate.SessionFactory getSessionFactory() { return sessionFactory; } /** * return session factory * * session factory will be rebuilded in the next call */ public static void setConfigFile(String configFile) { HibernateSessionFactory.configFile = configFile; sessionFactory = null; } /** * return hibernate configuration * */ public static Configuration getConfiguration() { return configuration; } }
在之前的基础上创建dao
public interface DistrictDao { //根据制定的id查询区县信息 根据区县可以查询到街道 District getDistrictById(Integer id); }
创建daoImpl
public class DistrictDaoImpl implements DistrictDao{ @Override public District getDistrictById(Integer id) { Session session = HibernateSessionFactory.getSession(); District district = (District) session.load(District.class, id); System.out.println("daoImpl中的session=====>"+session.hashCode()); return district; } }
创建对应的servlet
public class DistrcitServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //实例化service层对象 DistrictDao dao=new DistrictDaoImpl(); //查询id是1001的区县下所有的街道 District district = dao.getDistrictById(1001); Liststreets = district.getStreets(); //把街道放入指定的作用域 request.setAttribute("streets", streets); request.getRequestDispatcher("index.jsp").forward(request, response); } }
创建对应的Filter 并在web.xml文件中配置filter和filter-mapping
public class OpenSessionInViewFilter implements Filter { @Override public void destroy() { } //真正执行代码的地方 获取session 开启事务 @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { Session session = HibernateSessionFactory.getSession(); System.out.println("filter中的session=====>"+session.hashCode()); chain.doFilter(request, response); HibernateSessionFactory.closeSession(); //关闭session } @Override public void init(FilterConfig arg0) throws ServletException { } }
web.xml文件中新增
openSession cn.bdqn.filter.OpenSessionInViewFilter openSession /*
之后创建页面
My JSP ‘index.jsp‘ starting page ${s.id } ${s.name }
hibernate08--OpenSessionInView
标签:ice needed script get use config http ansi control
原文地址:http://www.cnblogs.com/HHR-SUN/p/7190956.html
下一篇:php目录递归删除
文章来自:搜素材网的编程语言模块,转载请注明文章出处。
文章标题:hibernate08--OpenSessionInView
文章链接:http://soscw.com/index.php/essay/96228.html
文章标题:hibernate08--OpenSessionInView
文章链接:http://soscw.com/index.php/essay/96228.html
评论
亲,登录后才可以留言!