小编典典

Hibernate:直接在Bean中设置ID或调用load()或get()方法之间有区别吗?

hibernate

以下是负载示例:

Stock stock = (Stock)session.load(Stock.class, new Integer(2));
           StockTransaction stockTransactions = new StockTransaction();
           //set stockTransactions detail
           stockTransactions.setStock(stock);        
           session.save(stockTransactions);

如果我像这样直接设置ID有什么区别?

Stock stock =new Stock();
stock.setId(2);
 StockTransaction stockTransactions = new StockTransaction();
               //set stockTransactions detail
               stockTransactions.setStock(stock);        
               session.save(stockTransactions);

正如我已经知道股票表的ID。是叫负载还是得到?


阅读 258

收藏
2020-06-20

共1个答案

小编典典

有什么区别 …

您的第一个代码示例从数据库中获取对象,因此加载的对象将处于持久状态。您的第二个示例将尝试StockTransaction使用 全新的
示例进行保存Stock。这可能会导致主键错误(如果库存编号是唯一的)或重复的条目。您应该根据需求选择使用哪种方式。如果您需要StockTransaction现有的Stock(我假设您是在写ID的情况下遇到这种情况)-您应该首先从数据库加载它。

是叫负载还是得到?

如果数据库中没有此类对象(具有此类ID),则Session.load()将返回具有空字段的代理。

如果没有具有此ID的对象,Session.get()将返回null。

使用哪一个取决于您和您的任务。我个人更喜欢get()

2020-06-20