6
看一看source code。为什么saveOrUpdateAll在春季不推荐使用HibernateOperations
有可能是背后的正当理由,但它是奇怪的是,我所能做的hibernate.deleteAll
和hibernate.loadAll
,但不hibernate.saveOrUpdateAll
(相信我能做到,实际上,但是,如果这种方法已不意味着它会在下一版本中消失)
看一看source code。为什么saveOrUpdateAll在春季不推荐使用HibernateOperations
有可能是背后的正当理由,但它是奇怪的是,我所能做的hibernate.deleteAll
和hibernate.loadAll
,但不hibernate.saveOrUpdateAll
(相信我能做到,实际上,但是,如果这种方法已不意味着它会在下一版本中消失)
的原因是从Java文档清晰,
有利于个人saveOrUpdate或合并使用
正如你所看到的方法的实现,从link取码,
public void saveOrUpdateAll(final Collection entities) throws DataAccessException {
768 executeWithNativeSession(new HibernateCallback() {
769 public Object doInHibernate(Session session) throws HibernateException {
770 checkWriteOperationAllowed(session);
771 for (Iterator it = entities.iterator(); it.hasNext();) {
772 session.saveOrUpdate(it.next());
773 }
774 return null;
775 }
776 });
777 }
这种方法是比较少用,它不能成为你的事务中。所以,Spring希望你迭代列表并保存单个对象。
loadAll()
方法是不同且有用的。它与saveOrUpdateAll()
不相似。
你说得对,您的观察结果deleteAll()
与saveOrUpdateAll()
类似,我同意它不一致,一个不推荐使用,另一个不使用。
谢谢马努,很好的解释!我不知道这种方法不能用于交易。 – 2012-04-14 12:43:59