1.hibernate 3.1的lazy默認(rèn)值是true,需要注意。
2.針對(duì)這幾天的代碼:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
Session session = hibernate.HibernateSessionFactory.getSession();

Jishuchuangxinzhongxin jishuchuangxinzhongxin = (Jishuchuangxinzhongxin) session
.load(Jishuchuangxinzhongxin.class, new Integer(Integer
.valueOf((String) request.getParameter("id"))
.intValue()));
System.out.println(jishuchuangxinzhongxin.getBiaoti());
request.setAttribute("jishuchuangxinzhongxin", jishuchuangxinzhongxin);

session.close();

return mapping.findForward("show_jishuchuangxinzhongxin");
}
如果去掉 System.out.println(jishuchuangxinzhongxin.getBiaoti());這句后,則findforward到JSP時(shí)就會(huì)出現(xiàn)錯(cuò)誤,終其原因就是3.1默認(rèn)就是延遲加載,在內(nèi)部NEW了一個(gè)代理對(duì)象的引用。當(dāng)加上 System.out.println(jishuchuangxinzhongxin.getBiaoti());這句后,hibernate 3.1初始化代理對(duì)象中的各個(gè)屬性,下一步session.close,雖然session是close關(guān)的,但JSP也可以訪問游離對(duì)象,所以不出錯(cuò)。
3.避免上2條的錯(cuò)誤,解決辦法有二:(1)設(shè)置class標(biāo)記為lazy=false,即非延遲檢索 (2)使用session.get方法來代替session.load方法。因?yàn)閟ession.get方法是立即檢索策略。
2.針對(duì)這幾天的代碼:















3.避免上2條的錯(cuò)誤,解決辦法有二:(1)設(shè)置class標(biāo)記為lazy=false,即非延遲檢索 (2)使用session.get方法來代替session.load方法。因?yàn)閟ession.get方法是立即檢索策略。