Tôi đang làm việc trên một ứng dụng cần thực hiện một số thao tác cơ sở dữ liệu.Cách tạo chủ đề an toàn EntityManagerFactory?
Tôi tạo ra một biến tĩnh cho EntityManagerFactory và Intialized nó trong phương pháp đó được gọi bằng các ứng dụng
if (emf == null){
emf = Persistence.createEntityManagerFactory("example");
}
try {
em = emf.createEntityManager();
} catch (Exception ex) {
logger.error(ex.getMessage());
}
là chủ đề này an toàn không? nếu tôi tạo EntityManagerFactory trong một khối đã đồng bộ, số lượng các chủ đề chờ đợi sẽ tăng lên và làm treo ứng dụng.
Tôi đã xem các tài liệu để xem liệu Persistence.createEntityManagerFactory có phải là chủ đề an toàn không thành công hay không.
Vui lòng chỉ cho tôi các tài nguyên phù hợp.
Tôi đã làm điều đó trước đây. Tuy nhiên, một số người cảm thấy rằng nó không phải là một thực hành tốt để khởi tạo trong các khối tĩnh. Có đúng không? –
@Vanchinathan Đó thực sự là một cách tiếp cận điển hình khi bạn không ở trong một môi trường được quản lý và tôi không thấy có điều gì sai trái với nó. Bây giờ, nếu bạn cung cấp một số tranh luận chống lại nó, chúng tôi có thể thảo luận về chúng nhưng cho đến lúc đó, tôi duy trì đề xuất này. –
Một đối số mà tôi luôn nhận được là có mã trong các khối tĩnh, cản trở việc kiểm tra. Chúng tôi tuân thủ nghiêm ngặt việc phát triển Test Driven. Vì vậy, tôi cần một cái gì đó cũng dễ dàng hơn để kiểm tra. –