19.cascade与“读”不发生关系。只与增删改有关。”读“与fetch有关。
对于“读”:hibernate的默认设置符合人们使用的习惯。如果要手动控制”读“,可以设置fetch属性。
如果导航起始对象为“多”,读取该对象,hibernate默认将导航终止对象也会读出来。
如果导航起始对象为“1"“,读取该对象,hibernate默认不会将导航终止对象读取出来。可以设置fetch=FetchType.EAGER,一旦是EAGER的,那么在get导航起始对象后,导航终点对象自动保存到内存,在commit()后可用,否则如果fetchType.LAZY那么当第一次使用导航终点对象的时候会查询数据库,则在commit()之后不可用。
如果要在Client端操作的对象少一些,可以在导航起始对象设置cascade。
session的get和load在使用方面没有太多的差异。load生成一个代理对象,不会立即发sql语句,第一次使用的时候查询数据库。