Tôi vừa bắt đầu một thử nghiệm Java đơn giản, quản lý một số thực thể sử dụng Hibernate và cung cấp một giao diện REST để thao tác các đối tượng này và cung cấp thêm một số logic nghiệp vụ. Giao diện REST được tạo ra bằng RESTEasy và Jetty.Tạo Hibernate-Session theo yêu cầu
Mọi thứ hoạt động tốt cho đến nay, nhưng tôi có cảm giác rằng tôi đang viết quá nhiều mã bản mẫu. Vì tôi không có nhiều kinh nghiệm trong các khung công tác Java này, tôi chỉ tự hỏi liệu có ai có thể cho tôi một gợi ý về cách cải thiện tình hình.
- Creting Hibernate phiên cho mỗi yêu cầu
Vâng, như xa như tôi hiểu tôi phải tạo ra một phiên Hibernate theo yêu cầu và cuối cùng tôi phải đóng nó lại. Vì vậy, hiện tại tất cả các phương thức dịch vụ của tôi trông giống như sau:
Session session = HibernateUtil.getInstance().getSessionFactory().openSession();
...
...
...
session.close();
Có cách nào để xóa hai dòng này để tự động thực hiện điều này không? Hiện tại dịch vụ của tôi đã được đăng ký là một singleton RestEASY. Sẽ thay đổi thành một Ressource RESTeasy và tạo phiên trong constructor giải quyết vấn đề? Tôi nghĩ rằng nó sẽ giải quyết vấn đề tạo phiên. Nhưng ở đâu để đóng nó?
Trong C++, điều này có thể dễ dàng thực hiện là tạo một đối tượng phạm vi để đóng phiên ở cuối. Nhưng trong Java?
- Bất cứ khi nào yêu cầu REST được thực hiện, tôi phải kiểm tra phiên hợp lệ (người dùng phải đăng nhập trước đó). Là một ServletFilter đúng cách để làm điều này?
Chung: Tôi có nên sử dụng bất kỳ mẫu hoặc khuôn khổ nào khác không? Tôi có nghĩa là tôi muốn giữ nó đơn giản nhất có thể và đặc biệt là khi tôi không có nhiều kinh nghiệm, tôi không muốn kết thúc bằng cách sử dụng Spring hoặc bất kỳ khuôn khổ hạng nặng nào. Dường như tôi đã quen với sự đơn giản của Python và Django nhưng đối với dự án nhỏ này, tôi phải sử dụng Java.
THanks cho đến nay!
Ok, nhưng tôi phải đóng phiên làm việc ở đâu? – duselbaer
Trong trường hợp struts2, u có thể sử dụng bộ chặn để khởi tạo và đóng đối tượng phiên. –