Hibernate加载数据的两种方式:
Get(),load()
1.Session.get(Classarg0,Serializable arg1)方法
*arg0:需要加载对象的类,例如:User.class
*arg1:查询条件(实现了序列化接口的对象);
*此方法返回类型为Object对象,然后我们可以强制转换为需要加载的对象,如果数据不存在,则返回null
注:执行此方法时立即发出查询SQL语句,加载User对象
2.Object Session.load(Classarg0,Serializable arg1)throws HibernateException
*arg0:需要加载对象的类,例如:User.class
*arg1:查询条件(实现了序列化接口的对象);
*此方法返回类型为Object,但返回的是代理对象
*执行此方法时不会立即发出查询SQL语句。只有在使用对象时,它才发出SQL语句,加载对象
*load方法实现了lazy(称为延迟加载)
*Hibernate延迟加载实现原理是代理方式
*使用load方法加载数据,如果数据库中没有相应记录,则会抛出异常对象找不到
Hibernate两种加载数据方式的区别:
get()方法默认不支持lazy(延迟加载)功能,load()支持;
get()方法在查询不到数据库时,返回null,而load因为支持延迟加载,只有在对象使用时才加载,如果数据不存在时会抛出异常。
Get()和load()只支持主键查询,不能根据其他字段查询,如果想根据非主键查询,可以使用HQL
Hibernate更新删除数据:
Hibernate进行更新删除时,先加载数据,然后再更新删除