关闭

hibernate与spring整合的问题

499人阅读 评论(0) 收藏 举报
 
Hibernate: select spring0_.id as col_0_0_ from spring spring0_ where spring0_.username=
Hibernate: 
select spring0_.id as col_0_0_ from spring spring0_ where spring0_.username=
Hibernate: 
select spring0_.id as id0_0_, spring0_.username as username0_0_, spring0_.password as password0_0_ from spring spring0_ where spring0_.id=
Hibernate: 
select spring0_.id as col_0_0_ from spring spring0_ where spring0_.username=
Hibernate: 
select spring0_.id as col_0_0_ from spring spring0_ where spring0_.username=
Hibernate: 
select spring0_.id as id0_0_, spring0_.username as username0_0_, spring0_.password as password0_0_ from spring spring0_ where spring0_.id=
Hibernate: 
select spring0_.id as col_0_0_ from spring spring0_ where spring0_.username=
Hibernate: 
select spring0_.id as col_0_0_ from spring spring0_ where spring0_.username=
Hibernate: 
select spring0_.id as id0_0_, spring0_.username as username0_0_, spring0_.password as password0_0_ from spring spring0_ where spring0_.id=

其中我只用了一次向数据库查询数据怎么这一句
Hibernate: select spring0_.id as col_0_0_ from spring spring0_ where spring0_.username=? 
要执行两此
其中查询是在spring的validator中中进行的事物管理使用spring的声明式事物管理
Spring DBuser = udao.getUserByName(user.getUsername());
而getUserByName()的定义如下
 
public class SpringDaoImpl extends HibernateDaoSupport implements SpringDao 

 
public Spring getUserByName(String name) 
         Session session 
= this.getSession(); 
         Query q 
= session.createQuery("from Spring s where s.username=?"); 
         q.setString(
0, name); 
         Spring user 
= null
         
if(q.iterate().hasNext()) 
         

             user 
= (Spring) q.iterate().next(); 
         }
 
         
return user; 
     }
 
 }  

而现在我有试着重新把这个方法再定义下,其改后如下
 
  public Spring getUserByName(String name) 
          List list 
= this.getHibernateTemplate().findByNamedParam( 
                  
"from Spring s where s.username=:name""name", name); 
          Iterator it 
= list.iterator(); 
          Spring user 
= null
          
if (it.hasNext()) 
              user 
= (Spring) it.next(); 
          }
 
          
return user; 
      }
 

这时我重新运行这个web程序 看下运行的结果,却发现这时没有hibernate所说的lazy-load(懒集合),而是直接从database里把所有的数据加进来
其运行两次的结果如下:
 
Hibernate: select spring0_.id as id0_, spring0_.username as username0_, spring0_.password as password0_ from spring spring0_ where spring0_.username=
Hibernate: 
select spring0_.id as id0_, spring0_.username as username0_, spring0_.password as password0_ from spring spring0_ where spring0_.username=

这是否就意味着没有使用到hibernate提供的性能优化的功能呢?或者这背后还有更多的考虑呢?真是迷惑啊,还请各位指点。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2014次
    • 积分:55
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档