2011-12-08 36 views
5

Tôi đã tự hỏi, sẽ có Java EE 7's giao diện lõi mở rộng AutoCloseable hay không. (Bằng giao diện lõi tôi chủ yếu có nghĩa là EntityManager và thích, tuy nhiên tôi không biết chắc chắn nếu có giao diện khác hoặc các lớp học có tiềm năng có thể tự động bị đóng.)Các giao diện cốt lõi của Java EE 7 (EntityManager, ...) có thể mở rộng AutoClosable không?

Tôi nghĩ rằng họ nên và đây là cơ sở giả định của tôi.

Java 6's Connection thậm chí không mở rộng Closeable, tuy nhiên Java 7's Connection kéo dài AutoCloseable (giống như nhiều giao diện khác trong gói java.sql).

giao diện như EntityManager có thể mở rộng AutoCloseable theo cách đó nó sẽ phục vụ chúng tôi tốt, cho Java 7's try-with-resources statement? Hoặc đóng một EntityManager tự động kỳ diệu quá phức tạp?

Tính năng này có được coi là một phần của JSR-342 không?

+1

Tôi nghĩ rằng đó là một câu hỏi hay để hỏi tại danh sách gửi thư đặc điểm kỹ thuật của JPA tại đây: http://java.net/projects/jpa-spec/lists –

+0

Nó xuất hiện trong danh sách Servlet một lần. Vấn đề là JPA, JSF vv muốn tương thích ngược bên ngoài Java EE. –

+2

Nếu bạn sử dụng phiên bản JPA được quản lý bởi container, các giao dịch thực sự sẽ được bắt đầu và đóng như các từ "tự động kỳ diệu" của bạn và bạn không phải lo lắng về điều đó. Nếu câu hỏi của bạn liên quan đến phiên bản JPA do ứng dụng quản lý, bạn nên chỉnh sửa câu hỏi. – jmoreira

Trả lời

3

Nếu bạn đang quản lý các đối tượng JPA của riêng mình thì tài nguyên thử là một điều tốt đẹp để có liên quan đến EntityManagers và ở mức độ thấp hơn là EntityManagerFactory.

Tôi đã chọn tạo tiện ích bao bọc EntityManagerFactory trong java.lang.reflect.Proxy triển khai phiên bản AutoCloseable của giao diện. Trình xử lý lời gọi sau đó chặn các cuộc gọi đến createEntityManager() để nó có thể trả về các phiên bản proxy của các cá thể EntityManager bên dưới cũng thực hiện AutoCloseable.

Tôi nghĩ rằng nó dễ dàng hơn trong thế giới của các đối tượng JPA được quản lý container nhưng nếu bạn bị kẹt trong một ứng dụng web đơn giản thì điều này có thể phù hợp với bạn.

+0

massfords quên đề cập đến rằng ông đã viết một bài viết tuyệt vời, nơi ông cho thấy làm thế nào để thực sự tạo proxy như vậy, bạn có thể tìm thấy nó ở đây: http://massfords.com/Proxy-for-AutoCloseable/. Cảm ơn Mark! – wpodgorski

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