mới để mùa xuân và đây @stackoverflowXuân @Transactional sáp nhập và tồn tại câu hỏi
Tôi đang xây dựng một kho độc lập & Sales theo dõi ứng dụng (Apache Pivot/Spring/JPA/Hibernate/MySQL) cho một doanh nghiệp phân phối .
Cho đến nay tôi nghĩ mọi thứ đều là CRUD, vì vậy tôi dự định có một lớp cơ sở với mọi thứ @Transactional.
Sau đó, tôi gặp sự cố với phương pháp lưu chung của tôi. Phương pháp liên tục và hợp nhất của EntityManager từ Spring có sự khác biệt không?
Tôi đã thử chạy và được gọi là lưu cho cả chèn và cập nhật và nó hoạt động tốt (tôi nghĩ mùa xuân sẽ tự động làm mới thực thể mỗi khi tôi gọi phương thức lưu của mình // thấy các truy vấn ngủ đông được ghi lại, đúng không?).
@Transactional
public abstract class GenericDAO {
protected EntityManager em;
// em [email protected]/setter
public void save(T t) {
// if (t.getId() == null) // create new
// {
// em.persist(t);
// } else // update
// {
em.merge(t);
// }
}
}
Và btw, có thiết lập như thế này, tôi sẽ không ảnh hưởng nhiều đến hiệu suất phải không? Giống như gọi salesDAO.findAll() để tạo báo cáo (không cần phải giao dịch, phải không?).
cảm ơn !!!
Tôi đánh dấu đây là cách đơn giản nhất. Vì vậy, nếu tôi có JpaDaoSupport, và tôi nhận được một thực thể từ nó, bất kỳ thay đổi sẽ được tự động cam kết? Tôi nghĩ rằng tôi sẽ có hai biến thể của phương pháp lưu, một phương pháp vẫn tồn tại và một biến thể tuôn ra. Bất kỳ bình luận về điều này? – thirdy
Bạn có nghĩa là tự động như đã cam kết mà không lưu hoặc cập nhật không? Nếu vậy, tôi sẽ không nghĩ như vậy, tôi luôn luôn chỉ cần gọi lưu trên một thực thể mới hoặc cập nhật trên một hiện có để tồn tại. Tôi đã không bao giờ cần thiết để gọi phương pháp tuôn ra, nhưng truy cập DB của tôi là khá đơn giản cho bất kỳ yêu cầu nhất định. –
Tôi sẽ phải từ bỏ việc thử Mùa xuân ngay bây giờ. Chỉ cần tò mò, làm thế nào Grails cải thiện về điều này? Tôi sẽ không gặp phải những vấn đề như thế này ở Grails phải không? – thirdy