都说hibernate开发接口中的get() 和load()方法是有区别的,在于它们向数据库发送SQL语句的时段不同。但我执行下面这两个测试的时候,却没有出现意料的错误。@Test
public void tesGet() {
Teacher t = new Teacher() ;
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
t = (Teacher)session.get(Teacher.class, 2) ;
session.getTransaction().commit();
System.out.println(t.getClass()) ;
}
@Test
public void tesLoad() {
Teacher t = new Teacher() ;
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
t = (Teacher)session.load(Teacher.class, 4) ;
session.getTransaction().commit();
System.out.println(t.getClass()) ;
}
public void tesGet() {
Teacher t = new Teacher() ;
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
t = (Teacher)session.get(Teacher.class, 2) ;
session.getTransaction().commit();
System.out.println(t.getClass()) ;
}
@Test
public void tesLoad() {
Teacher t = new Teacher() ;
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
t = (Teacher)session.load(Teacher.class, 4) ;
session.getTransaction().commit();
System.out.println(t.getClass()) ;
}
解决方案 »
- 怎样将下载的web project项目添加到eclipse中?新手……
- 问一下,关于数据采集的问题。
- spring security 无法获取当前用户
- word,txt,xls,jpg java 代码装换为tif 文件
- 数据访问层代码命名的小调查
- org.apache.commons.fileupload 上传组件写了一个上传类,upload.parseRequest(request)返回null
- 关于环境变量配置的一个怪现象
- struts+weblogic8.1的中文问题
- Driver myDriver = (Driver) Class.forName("weblogic.jdbc.oci.Driver").newInstance();
- 粗俗解释stateful & stateless session ejb
- 专研 JS 对以后的管理层有阻碍么?
- 一个jsp页面的text如何获取另一个页面的text
这里先贴一个:
http://blog.163.com/love-love-l/blog/static/210783042009618919985/
你在testload里面执行下 t.getXXX()就会出异常了,如果你的4不是teacher的主键的话
补充一下,
load方法查询返回肯定有个对象,即使数据库无该记录,所以你调用object.getClass()不会有任何问题;
在数据库中存在,不存在返回 null;
2. load 对当前查询的对象进行延迟加载,也可以对存在的瞬时/游离对象进行填充,load默认你查询的对象是在
数据库中存在的,所以如果数据库中不存在的话,则抛出异常(在你使用这个对象需要发出SQL语句的时候)。
如果你的 tesLoad() 中传入的 id=4 数据库中不存在的话,随便访问找到的 Teacher 对象的一个值,则抛出异常