Gần đây tôi đã có được niềm vui khi được phép làm nổi bật phiên bản của sự phụ thuộc Hibernate (trong số những người khác) trong một cơ sở mã di sản có kích thước trung bình (từ 3.x đến 5.2). Bản thân mã này đã được hơn 10 năm nhưng vẫn được sử dụng hàng ngày. Vì vậy, ngay cả sau khi tăng phiên bản và chuyển càng nhiều các cuộc gọi API ra khỏi khu vực hiện tại của chúng tôi (tìm hiểu cách thực hiện SchemaExport là một trải nghiệm thú vị), tôi vẫn không thấy điều này như một sự chuyển đổi hoàn toàn.Đường dẫn nâng cấp dự định cho các ứng dụng Hibernate cũ là gì?
Tôi tự hỏi đường dẫn nâng cấp dự định dành cho người dùng cũ là hệ thống doanh nghiệp sẽ có từ 10 đến 15 năm và đôi khi bạn cần chuyển sang phiên bản phụ thuộc mới hơn để nhận các sửa lỗi hoặc tính năng cần thiết.
Những điểm sau đây là phần nào vẫn còn mở:
Không có cách nào rõ ràng hoặc tự động để di chuyển thông tin bản đồ .hbm.xml để chú thích JPA. Tôi biết việc di chuyển thủ công sẽ rất dễ xảy ra lỗi và không phải tất cả các khái niệm đều có bộ phận truy cập rõ ràng hoặc rõ ràng.
Hiện chúng tôi nhận được rất nhiều cảnh báo không dùng nữa (org.hibernate.orm.deprecation) về việc sử dụng API tiêu chí cũ của chúng tôi nhưng cũng không có đường dẫn nâng cấp rõ ràng. Người ta không thể chỉ viết lại toàn bộ mã truy cập db của một ứng dụng đến một API hoàn toàn khác biệt và chi tiết hơn mà chắc chắn sẽ hoạt động khác nhau ở các trường hợp cạnh nhất định.
Có vẻ như chúng tôi sử dụng rất nhiều truy vấn gốc và các phiên bản
org.hibernate.transform.ResultTransformer
nhưng dường như không còn được dùng nữa mà không có chỉ dẫn về cách giải quyết vấn đề này.
Nói chung, tôi tìm thấy tài liệu về việc không dùng nữa và dự định nâng cấp đường dẫn trên mặt của Hibernate. Tôi hiểu rằng đó là một dự án mã nguồn mở và rằng họ không muốn duy trì các API cũ mãi mãi nhưng tôi vẫn cảm thấy một chút mất mát và tôi không tin đây là ứng dụng Java kế thừa duy nhất hiện có vẫn đang được sử dụng hôm nay.
Hầu hết các mối quan tâm của bạn đều được đề cập đến bởi sự tồn tại của các bài kiểm tra tích hợp. Cho rằng bạn làm việc trên các hệ thống cũ, tôi lấy nó mà bạn không có. Đó sẽ là vấn đề chính của bạn, không phải thực tế là Hibernate phát triển theo thời gian. Tôi đã thực hiện nâng cấp tương tự nhưng cũng nâng cấp máy chủ (JBoss 5.1 lên Wildfly 9) và JSF (1.2 + JBoss Seam thành JSF 2.2 + Primefaces) - đó là một trải nghiệm đau đớn mất 6 tháng thiết kế lại mã. Đó chỉ là cách nó là với các hệ thống di sản - và tại sao nhiều người chọn không nâng cấp. – Gimby
Các mẫu và công nghệ nào đang sử dụng trong ứng dụng của bạn? Tôi có nghĩa là bạn ứng dụng sử dụng MVC, cho lớp dịch vụ để bạn sử dụng Spring, EJB hoặc một cái gì đó như thế này. –
Tôi có thể đề xuất bạn nâng cấp lên 5.1 chứ không phải 5.2 chưa? 5.2 là rất nhiều về "lát đường" đối với Hibernate 6, và không chấp nhận một số điều mà chúng ta biết sẽ được gỡ bỏ, nhưng thực sự không phải tất cả mọi thứ là rõ ràng được nêu ra. Ngoài ra một số thay đổi đã đi một chút quá xa, và chúng tôi đang khôi phục một chút trong 5.2.1, tức là https://hibernate.atlassian.net/browse/HHH-10877 – Sanne