Nếu tôi có một lớp util với các phương thức tĩnh sẽ gọi hàm Hibernate để thực hiện truy cập dữ liệu cơ bản. Tôi tự hỏi nếu làm cho phương pháp synchronized
là cách tiếp cận đúng để đảm bảo an toàn luồng.Các phương thức tĩnh được đồng bộ hóa hoạt động như thế nào trong Java?
Tôi muốn điều này ngăn chặn quyền truy cập thông tin vào cùng một cá thể DB. Tuy nhiên, bây giờ tôi chắc chắn nếu mã sau đang ngăn chặn getObjectById
được gọi cho tất cả các Lớp khi nó được gọi bởi một lớp cụ thể.
public class Utils {
public static synchronized Object getObjectById (Class objclass, Long id) {
// call hibernate class
Session session = new Configuration().configure().buildSessionFactory().openSession();
Object obj = session.load(objclass, id);
session.close();
return obj;
}
// other static methods
}
Câu trả lời rất hữu ích! Vì vậy, Hibernate chăm sóc cnocurrency bởi "khóa lạc quan". Sau đó, không cần phải sử dụng "đồng bộ" phương pháp ở tất cả để giải quyết bất kỳ concurrecy truy cập dữ liệu ?? Sử dụng các phương thức "đồng bộ" chỉ khi dữ liệu không được lưu trữ trong cơ sở dữ liệu ?? .. khi nào bạn sử dụng chúng? – tomato
1) Tôi nghĩ rằng có một số phương tiện để sử dụng khóa bi quan quá. 2) Không, RDBMS có thể làm việc đó. 3) Nếu dữ liệu được truy cập bởi nhiều luồng cùng một lúc. 4) đồng bộ hóa hữu ích khi hai luồng phải chia sẻ dữ liệu. Nếu họ không cần, thì tốt hơn nhiều! – OscarRyz
Bất kỳ nhà hàng thức ăn nhanh nào đều sử dụng đa luồng. Một chuỗi sẽ đưa bạn đặt hàng và sử dụng một chuỗi khác để chuẩn bị và tiếp tục với khách hàng tiếp theo. Điểm đồng bộ chỉ hoạt động khi họ trao đổi thông tin để biết chuẩn bị những gì. Theo một mô hình như thế thực sự đơn giản hóa cuộc sống. – OscarRyz