以下是负载示例:
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。是叫负载还是得到?
有什么区别 …
您的第一个代码示例从数据库中获取对象,因此加载的对象将处于持久状态。您的第二个示例将尝试StockTransaction使用 全新的 示例进行保存Stock。这可能会导致主键错误(如果库存编号是唯一的)或重复的条目。您应该根据需求选择使用哪种方式。如果您需要StockTransaction现有的Stock(我假设您是在写ID的情况下遇到这种情况)-您应该首先从数据库加载它。
StockTransaction
Stock
是叫负载还是得到?
如果数据库中没有此类对象(具有此类ID),则Session.load()将返回具有空字段的代理。
如果没有具有此ID的对象,Session.get()将返回null。
使用哪一个取决于您和您的任务。我个人更喜欢get()。
get()