有的说“hibernate的实体是lazy loading的,如果直接送到表现层(而不是把数据取出组装成DTO),会导致数据库连接不能及时回收。”
========
没听过,只有load时要转为dto传给view层

解决方案 »

  1.   

    需要转换为DTO送到表现层的是PO,
    例一    Transation t = (Transation) session.load(Transation.class, new Integer(1));
            t.setName("1");
            ts.commit();
    例二    Query q = session.createQuery("from Transation s where s.id=1");
            Transation t1 = null;
            if (q.list().size() > 0) {
                t1 = (Transation)q.list().get(0);
                t1.setName("wa");
            }
            ts.commit();这里并没有调用update方法,但是commit后,数据还是被更新了,因为Transation对象已经成为了PO,如果不加封装直接传递到VIEW层,在VIEW所作的修改就直接反映到数据库中,会对model层造成意想不到的破坏
      

  2.   

    myth822(枫红一刀) 
    误会了
    如果在commit后
    session.close();
    再把t1传给v层
    何来破坏?
      

  3.   

    楼主看来是真的没必要用hibernate了。
      

  4.   

    请teclogid(无名) 赐教
    真的不是很明白你的意思?
    :)