以下是加载示例:-
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。是调用负载还是获取?
最佳答案
What is the difference ...
您的第一个代码示例从数据库中获取对象,因此加载的对象将处于持久化状态。您的第二个示例将尝试使用全新 Stock
保存StockTransaction
。这可能会导致主键错误(如果股票 ID 是唯一的)或重复条目。您应该根据您的要求选择使用哪种方式。如果您需要使用现有 Stock
的 StockTransaction
(我假设这是您的情况,因为您写的是您知道 ID)- 您应该首先从数据库加载它。
Y call the load or get?
Session.load()如果数据库中没有这样的对象(具有这样的 id),将返回一个空字段的代理。
Session.get()如果没有具有该 ID 的对象,将返回 null。
使用哪一个取决于您和您的任务。我个人更喜欢 get()
。
关于java - Hibernate:直接在bean中设置Id和调用load()或get()方法的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23862969/