2010-09-03 38 views
6

Đối với một dự án mới mà chúng tôi đang bắt đầu (sử dụng JPA 2 trên Hibernate 3), chúng tôi cần lưu trữ tài liệu XML và sau đó truy vấn nội dung và cấu trúc của chúng sau này. Các cơ sở dữ liệu mà chúng tôi muốn hỗ trợ là DB2, Oracle và SQLServer.Hỗ trợ JPA cho các cột dữ liệu XML

Tôi biết tất cả ba nhà cung cấp DB đều hỗ trợ truy vấn XML nguyên gốc (sử dụng câu lệnh SQL và XQuery) nhưng có hỗ trợ trực tiếp nào trong Hibernate cho việc này không? Nói cách khác, tôi có thể viết một bộ mã truy cập dữ liệu ngủ đông truy vấn tất cả 3 kiểu cơ sở dữ liệu một cách agnostically bằng cách sử dụng tính năng tích hợp của Hibernate/JPA hay tôi cần phải mã các truy vấn cụ thể cho từng loại DB?

Tôi đánh giá cao rằng tôi có thể xác định cột là cột @Lob và sau đó đọc tất cả các bản ghi, phân tích cú pháp và kiểm tra nhưng tôi đã hy vọng tận dụng sức mạnh của động cơ DB thay vì phải tự làm.

Để tham khảo, chúng tôi sẽ chỉ sử dụng một hương vị DB tại một thời điểm, nó chỉ là chúng tôi muốn có thể hỗ trợ cả 3 chúng ta cần.

Cảm ơn Steve

Trả lời

2

JPA không cung cấp hỗ trợ cụ thể cho các loại độc quyền này ngoài Lob. Để được hỗ trợ nâng cao hơn, tôi đoán bạn sẽ phải triển khai một số kiểu người dùng tùy chỉnh Hibernate. Các tài liệu sau đây có thể cung cấp cho bạn một số ý tưởng.

Tất nhiên, họ sẽ có cơ sở dữ liệu cụ thể và sẽ làm cho đoạn code ít di động.

Về truy vấn, AFAIK bất kỳ hàm nào được gọi trong mệnh đề WHERE của câu lệnh HQL và không biết Hibernate được chuyển như cơ sở dữ liệu. Vì vậy, bạn có thể tận dụng các chức năng cụ thể. Nhưng một lần nữa, điều này sẽ làm cho cơ sở dữ liệu truy vấn cụ thể. Có thể xem xét sử dụng các ánh xạ orm.xml cho các triển khai cụ thể.

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