zoukankan      html  css  js  c++  java
  • 【Hibernate】Re08 加载策略配置

    一、关联查询的问题:

    使用关联查询,例如简单的一对多关系查询,查出一个部门对象和对应的N个员工对象。

    如果一般情况下,我们只是需要部门对象,并不关系关联的员工对象,那么Hibernate关联查询出来的员工对象就是多余的了

    所以Hibernate提供了懒加载策略,懒加载策略又称为延迟加载策略,当对象被调用时才会触发加载的需要。

    二、可设置延迟加载的三个级别位置:

    1、类级别,在Class标签中设置,默认值为True,表示使用延迟加载,False不使用懒加载,立即加载

    2、一对多关联使用Set标签,除了上述的True & False,还有一个Extra,表示增强延迟加载

    3、多对一关联级别,值区分了两种,Proxy延迟加载,No-Proxy不代理延迟加载,False立即加载

    三、Open Session In View模式

    懒加载与Session的问题:

    使用懒加载,首次查询完毕,如果没有调用关联对象,则不会触发Hibernate延迟加载,Session查询完毕,对象就会被释放

    如果调用这个主关系对象去获取关联对象,Session又不存在了,Hibernate就会抛出延迟加载初始化异常

    Hibernate社区的解决方案是提出了Open Session In View 模式:

    ——用户的每一次请求,始终保持一个Sesssion开启状态

    配置OSV模式:

    JavaEE规范支持

    @WebFilter("/*")
    public class OpenSessionInViewFilter implements Filter {
        
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            Transaction transaction = null;
            try {
                transaction = HibernateUtil.getCurrentSession().beginTransaction();
                filterChain.doFilter(servletRequest, servletResponse);
                transaction.commit();
            } catch (Exception exception) {
                exception.printStackTrace();
                if (transaction != null) transaction.rollback();
            }
        }
    }

    当然,如果不是注解配置而是使用web.xml配置:

    <filter>
        <filter-name>OpenSessionInView</filter-name>
        <filter-class>cn.zeal4j.filter.OpenSessionInViewFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>OpenSessionInView</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    - - -

  • 相关阅读:
    卡特兰数
    hdu 1023 Train Problem II
    hdu 1022 Train Problem
    hdu 1021 Fibonacci Again 找规律
    java大数模板
    gcd
    object dection资源
    Rich feature hierarchies for accurate object detection and semantic segmentation(RCNN)
    softmax sigmoid
    凸优化
  • 原文地址:https://www.cnblogs.com/mindzone/p/13737665.html
Copyright © 2011-2022 走看看