Hibernate两种加载数据的方式get()和load()

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进行更新删除时,先加载数据,然后再更新删除


你可能感兴趣的:(sql,Hibernate,数据库,object,user,null)