2012-04-13 20 views
6

Hãy xem xét source code.Tại sao saveOrUpdateAll không được dùng nữa vào mùa xuân HibernateOperations

Có thể có lý do chính đáng đằng sau đó, nhưng đó là lạ mà tôi có thể làm hibernate.deleteAllhibernate.loadAll, nhưng không hibernate.saveOrUpdateAll (chắc chắn tôi có thể làm điều đó trên thực tế, nhưng nếu phương pháp này không được chấp có nghĩa là nó có thể biến mất trong phiên bản tiếp theo)

Trả lời

10

lý do là rõ ràng từ các tài liệu Java,

ủng hộ saveOrUpdate cá nhân hoặc hợp nhất sử dụng

Như bạn có thể thấy việc thực hiện phương pháp này, mã lấy từ 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  } 

Phương pháp này ít được sử dụng, nó không thể là bên trong giao dịch của bạn. Vì vậy, mùa xuân muốn bạn lặp lại danh sách và lưu các đối tượng riêng lẻ.

Phương pháp loadAll() khác và hữu ích. Nó không giống với saveOrUpdateAll().

Bạn thích hợp với các quan sát của mình rằng deleteAll() tương tự như saveOrUpdateAll() và tôi đồng ý rằng nó không phù hợp và không được chấp nhận.

+0

Cảm ơn Manu, lời giải thích tuyệt vời! Tôi không biết rằng phương pháp này không thể được sử dụng bên trong giao dịch. –

Các vấn đề liên quan