您的位置:首页 > 其它

调试关于Hibernate的程序遇到的问题

2015-10-26 18:34 459 查看
最怕的就是初学一些东西,低级的错误犯了又犯,现在总结出来以便以后不要再犯类似的错误。

一、Hibernate的延迟加载机制

在用hibernate底层访问数据库的过程忽略了延迟加载机制导致



在访问时候的代码:

public New showNew(int id) {
New newShow = null;
Session session = null;
Transaction tx = null;
try {
session = HibernateUtil.getSession();
tx = session.beginTransaction();
newShow = (New)session.load(New.class, id);
tx.commit();
} catch (Exception e) {
e.printStackTrace();
throw new DaoException("查询单条新闻访问底层数据库抛出异常!");
} finally{
HibernateUtil.closeSession(session);
}

return newShow;
}

而配置的New.hbm.xml文件里是这样:

<hibernate-mapping package="com.demo">
<class name="com.demo.New" table="news" >
<id name="id">
<generator class="native"/>
</id>
<property name="title"/>
<property name="content"/>
<property name="addTime" column="addtime"/>

</class>
</hibernate-mapping>

hibernate的lazy策略是打开的,若没有设class的lazy值(true、false、extra)就会延迟加载直到在session打开的情况,要使用newShow对像时候才会被创建,所以没有得到newShow对象也就是这个原因了。

改正策略很简单,就是在xml文件的class标签后添加lazy="false"就OK了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: