我知道hibernate中get
和load
方法之间的差异。但是无法理解我可以使用load方法而不是get方法的真实场景。
请提供使用hibernate load方法的真实场景,而不是get方法。
答案 0 :(得分:3)
您想要设置产品类别。因此,您有一个列出类别的页面,允许选择一个,并发布表单。
发布表单包括调用以下方法:
public void setProductCategory(Long productId, Long categoryId)
此方法必须让产品修改它,并获得对类别的引用,以便能够调用
product.setCategory(category);
但是你真的需要加载该类别的数据来做到这一点吗?您已经拥有了它的ID,这应该足以获得对相应类别的引用,而无需从te数据库中实际获取该类别的所有数据。毕竟,Hibernate所要做的就是填充数据库中产品行的category_id列,并且您已经知道该类别的ID,因此不需要加载其余的类别数据。
这就是load()
方便的地方:它让您获得对持久对象的引用,而无需实际加载对象的数据:
Product product = (Product) session.get(Product.class, productId);
Category category = (Category) session.load(Category.class, categoryId);
product.setCategory(category);