2011-12-18 49 views
5

Cần: lấy XML và lưu dữ liệu vào cơ sở dữ liệu.Chuyển đổi XML sang cơ sở dữ liệu bằng Java

Hiện đang sử dụng: JAXB để chuyển đổi Lược đồ XML thành các lớp java. Sau đó, tôi dự định sử dụng JPA để duy trì các đối tượng được JAXB khắc phục.

Vấn đề: Tôi muốn cái gì đó để thu hẹp khoảng cách. Sau khi JAXB tạo ra các lớp Java, tôi phải chú thích thủ công tất cả các trường java.util.Date với @Temporal; Tôi phải đặt @Entity lên đầu mỗi lớp được tạo ... v.v.

Tôi gặp Hyperjaxb. Nhưng tôi có thể tìm thấy ít tài liệu về nó, và không thể làm cho nó hoạt động được.

Tôi đang mở cho các phương pháp tiếp cận hoàn toàn khác nhau. Điều này có vẻ như nó sẽ là một vấn đề phổ biến, vì vậy có thể có một giải pháp chung chung.

Trả lời

1

Hyperjaxb thực hiện chính xác những gì bạn đang cố gắng để đạt được.Đây là tài liệu hướng dẫn:

Dưới đây là hướng dẫn để giúp bạn bắt đầu:

+0

Tôi đã tìm kiếm độ tuổi cho một hướng dẫn, cảm ơn bạn rất nhiều. Tôi sẽ cho đi. – Kevin

+0

Máy chủ hợp lưu đã ngừng hoạt động ngày hôm qua, đó là lý do tại sao tôi không tìm thấy hướng dẫn. Cảm ơn các liên kết, như tôi đã có thể từ bỏ khác. – Kevin

+0

Tôi đã làm việc đó, cảm ơn. – Kevin

0

Tôi có thể đề xuất hai tùy chọn: Tùy chọn 1. Xác định các loại thực thể riêng biệt, có chú thích JPA có liên quan, tạo các loại JAXB của bạn từ giản đồ và khi chạy, bản đồ này sang lược đồ kia. Nếu nó là một ánh xạ đơn giản, bạn có thể sử dụng Apache BeanUtils để chỉ sao chép các thuộc tính từ bean này sang bean khác, nếu nó là một ánh xạ phức tạp hơn thì bạn có thể sử dụng một khung như dozer

Tuỳ chọn 2: Bắt đầu từ các loại thực thể , tạo lược đồ từ các loại thực thể của bạn hoặc giữ nguyên các loại thực thể và lược đồ trong đồng bộ. Giống như tùy chọn mà bạn đã mô tả, ngoại trừ nguồn có thẩm quyền là mã java so với lược đồ.

+1

Cảm ơn bạn trả lời. Các lớp học rất lớn, và tôi nghĩ rằng cả hai tùy chọn này sẽ cho tôi viết rất nhiều mã rất giống với mã được tạo tự động. Tuy nhiên, tôi sẽ nghỉ mát đến một cái gì đó như thế này nếu tôi không thể tìm thấy một giải pháp khác. – Kevin

3

Lưu ý: Tôi là người dẫn đầu EclipseLink JAXB (MOXy), và là thành viên của nhóm JAXB 2 (JSR-222) chuyên gia.

Nếu bạn đã có một lược đồ cơ sở dữ liệu hiện có, bạn có thể sử dụng công cụ Dali trong Eclipse (một phần của Web Tools Project) để tạo ra các đối tượng JPA của bạn hình thành cơ sở dữ liệu:

JAXB là cấu hình theo ngoại lệ, điều này có nghĩa là bạn chỉ cần thêm chú thích mà bạn muốn ghi đè hành vi mặc định. Dali cũng có dụng cụ để làm việc thêm chú thích JAXB dễ dàng hơn:

JPA thực thể thỉnh thoảng sử dụng các mối quan hệ hai chiều và các phím composite, chúng có thể được khôn lanh để ánh xạ XML. EclipseLink JAXB (MOXY) chứa một số phần mở rộng để làm cho dễ dàng hơn này (lưu ý EclipseLink cũng cung cấp một thực hiện JPA):

+0

upvoted cho đề cập đến cấu hình của ngoại lệ và các phím, nếu không công cụ phụ thuộc không phải là cách tốt nhất để giải quyết vấn đề – necromancer

+1

Tôi đã thấy MOXy, nhưng nó dường như nó chỉ hữu ích cho đi: Database-> Java-> XML và tôi cần XML-> Java-> Cơ sở dữ liệu. Tôi sẽ có một cái nhìn khác để đảm bảo, cảm ơn. – Kevin

+0

@Mowgli - MOXy giống như bất kỳ triển khai JAXB (JSR-222) nào có thể bắt đầu từ các lớp java hoặc lược đồ XML. –

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