Hãy xem xét một dịch vụ chỉ đọc mà cần phải thực hiện tìm kiếm thời gian thực của cơ sở dữ liệu sao lưu. Dịch vụ cần có khả năng tạo các truy vấn chọn khá phức tạp để tạo tóm tắt, báo cáo và kết quả dựa trên các đối tượng nhiều bảng. Các ưu tiên cho việc lựa chọn thư viện/khung là hiệu suất (của sql), bảo trì và tuổi thọ.So sánh các thư viện cho SQL động trong Java
Hibernate - Dường như yêu cầu "thủ thuật" để làm cho nó tạo ra đúng SQL, API tiêu chí trông đầy hứa hẹn nhưng cũng có một số hạn chế khi nói đến truy vấn tùy ý.
MyBatis - Không có API tiêu chí giống nhưng rõ ràng và sạch sẽ và thường không yêu cầu các thủ thuật và tweeks của Hibernate. Hạn chế cơ sở dữ liệu trừu tượng.
Một số giải pháp chưa được đánh giá khác bao gồm: SQLBuilder, Squiggle, Querydsl, JOOQ hoặc giải pháp tùy chỉnh.
Điều gì khiến người dùng SO thấy hoạt động tốt nhất để tạo dịch vụ tìm kiếm linh hoạt nhanh.
[cập nhật] - Một số thủ thuật và các vấn đề tôi đã phải đối mặt với Hibernate là ...
- https://hibernate.onjira.com/browse/HHH-879
- https://hibernate.onjira.com/browse/HHH-5291
- How to apply Where clause to secondary table
- https://forum.hibernate.org/viewtopic.php?f=1&t=973514
Nói chung, joi ning vào cùng một bảng hai lần dường như gây ra vấn đề. Tôi thậm chí đã quản lý để hibernate để sản xuất SQL đúng chỉ để có nó bản đồ kết quả sai bởi vì nó lưu trữ các ví dụ đầu tiên của thực thể và giả định các cột từ tham gia thứ hai, nơi dự phòng. Tham gia có điều kiện được thể hiện qua chú thích cũng rất đau đớn. Không nói điều đó là không thể nhưng rất khó hiểu và không trực quan.
Để trả lời X-Zero bên dưới, tôi muốn chuyển từ một đặc điểm kỹ thuật sang kết quả. Tức là, người tiêu dùng cho tôi biết họ biết gì và tôi xây dựng một truy vấn trả lời câu hỏi của họ một cách nhanh chóng. Trong thực tế, tôi dự định có một số giới hạn về những gì họ có thể đậu vào.
Tâm chi tiết hơn về các "thủ thuật" ngủ đông mà bạn đang đề cập đến? Các truy vấn của bạn có chứa các mệnh đề lựa chọn bên trong không? Một vài ví dụ về các truy vấn phức tạp cũng sẽ giúp ích. – limc
Và làm thế nào bạn mong đợi để có thể tạo các truy vấn này, nếu bạn không tự viết chúng? Bạn chỉ cần có một lối vào với các hộp kiểm (đối với những thứ như 'đã xảy ra trong quá khứ), hay một dạng xem mô hình nào đó (SQL mà tôi thấy từ đây thường không phải là tất cả những gì tuyệt vời, và nó có thể khó làm những thứ nâng cao trong giao diện như vậy). Và tôi giả sử rằng bạn ít nhất là khóa các đặc quyền người dùng cơ sở dữ liệu, nếu bạn cho phép SQL động do người dùng chỉ định. –
@limic: xem cập nhật xin vui lòng, nó sẽ là một bình luận khá dài –