下面是hibernate中dao层中的一个实现查询的方法,其中我有两个地方不懂List<Person> list=nuu这句的含义是什么?2、list=(List<Person>)query.list();这句又说的是什么意思?
备注:Person是一个类
public List<Person> listAllPersons()
  {
  Session session= HibernateUtil.openSession();
  Transaction tx=session.beginTransaction();
  List<Person> list=null;
 
  try{
  Query query=session.createQuery("from Person");
  list=(List<Person>)query.list();
  tx.commit();
  }
  catch(Exception ex)
  {
  if(null !=tx)
  {
  tx.rollback();
  }
  }finally{
 
  HibernateUtil.close(session);
 
  }
 
  return list;
  }

解决方案 »

  1.   

    List<Person> list=null; 起的是方法里一个全局变量的意思
    list=(List<Person>)query.list();当然是查出来的数据
    如果把 List<Person> list=(List<Person>)query.list()放到try catch 里面再 return list 是会报错的
      

  2.   

    List<Person> list=null; 这句话的意思是声明一个list接口 并且它的类型是Person之所以在try外面声明是因为如果在try里面声明的话这个list的作用范围只能在try里面这样的话就不能返回list了
      

  3.   

    1、List<Person> list=null ;  --这是声明
    2、list=(List<Person>)query.list();  -- 这是查询声明是不会报异常的,因此声明要放在try的外面,这样return时,才不会不认识这个变量。
      

  4.   

    List<Person> list=null;//声明一个泛型为person的list集合。list=(List<Person>)query.list();//把查询的结果集强制转化为泛型为person的list集合。
      

  5.   

    这里面只是一种编程习惯而已,为什么说是习惯?因为如果你没有这样子做过 就没有思路,就不会明白人家为什么要这样子写,这样子写又有什么好处?,看到的是你的这个方法public List<Person> listAllPersons(),我们可以分析一下,
    首现该方法的返回值是个
    List<Person> 因此你就需要在方法的末尾返回一个Person的泛型集合,好,有了这个需求,那么就是里面的构建并且返回List<Person>了 ,首现的List<Person> list=null;然后在Try里面list=(List<Person>)query.list();这样子有什么好处呢?比方说:如果你数据查询中出现错误了、那么list就为null并且返回,如果能查到那么就把查到的数据赋值给list然后返回。总的来说方法的末尾此时都有了返回,并且都还是合法的返回,即:都是返回List<Person>,要么为null要么有数据!