2011-12-18 16 views
5

Potrzebujesz: pobierz XML i zapisz dane w bazie danych.Konwersja XML do bazy danych za pomocą Javy

Obecnie używa: JAXB do konwersji schematu XML na klasy Java. Następnie zamierzam użyć JPA, aby utrzymać obiekty uporządkowane przez JAXB.

Problem: Chcę czegoś, aby wypełnić lukę. Gdy JAXB generuje klasy Java, muszę ręcznie opisać wszystkie pola java.util.Date za pomocą @Temporal; Muszę umieścić @Entity na górze każdej wygenerowanej klasy ... itd.

Natknąłem się na Hyperjaxb. Ale mogę znaleźć małą dokumentację i nie mogę go uruchomić.

Jestem otwarty na zupełnie różne podejścia. Wydaje się, że byłby to powszechny problem, więc może istnieje ogólne rozwiązanie.

Odpowiedz

1

Hyperjaxb robi dokładnie to, co próbujesz osiągnąć.Oto dokumentacja:

Oto poradnik jak zacząć grę:

+0

Szukam od wieków samouczek, dziękuję bardzo. Oddam to. – Kevin

+0

Serwer konfluencji był wczoraj wyłączony, dlatego nie znalazłem samouczka. Dzięki za link, ponieważ zrezygnowałbym inaczej. – Kevin

+0

Sprawdziłem, dziękuję. – Kevin

0

Mogę zaproponować dwie opcje: Opcja 1. Zdefiniuj typy jednostek oddzielnie, uwzględniając odpowiednie adnotacje JPA, wygeneruj typy JAXB ze schematu, aw czasie wykonywania zmapuj je jeden na drugi. Jeśli jest to proste odwzorowanie, możesz użyć Apache BeanUtils do skopiowania atrybutów z jednego komponentu do drugiego, jeśli jest to bardziej złożone odwzorowanie, możesz użyć struktury, takiej jak dozer Opcja 2: Rozpocznij od typów jednostek , wygeneruj schemat z typów encji lub ręcznie zsynchronizuj typy jednostek i schemat. Bardziej przypomina opcję, którą opisałeś, poza tym, że autorytatywne źródło to kod java niż schemat.

+1

Dzięki za odpowiedz. Klasy są bardzo duże i myślę, że obie te opcje spowodują, że piszę dużo kodu, który jest bardzo podobny do kodu wygenerowanego automatycznie. Jednakże, jeśli nie znajdę innego rozwiązania, odwołam się do czegoś takiego. – Kevin

3

Uwaga: Jestem EclipseLink JAXB (MOXy) ołowiu i członek grupy JAXB 2 (JSR-222) ekspertów.

Jeśli masz już istniejącego schematu bazy danych, można użyć narzędzia Dali w Eclipse (część projektu Web Tools), aby wygenerować podmioty WZP tworzą bazę danych:

JAXB to konfiguracja według wyjątku, co oznacza, że ​​wystarczy dodać adnotacje, w których chcesz zastąpić domyślne zachowanie. Dali ma również narzędzi, aby ułatwić dodawanie adnotacji JAXB:

podmioty WZP czasami używają relacji dwukierunkowych i kluczy złożonych, mogą być trudne do mapowania XML. EclipseLink JAXB (Moxy) zawiera kilka rozszerzeń, aby to ułatwić (nota EclipseLink oferuje również implementację JPA):

+0

przegłosowano dla wzmianki o konfiguracji według wyjątków i kluczy, w przeciwnym razie zależność od narzędzia nie jest najlepszym sposobem na rozwiązanie problemu. – necromancer

+1

Widziałem MOXy, ale wydawało się, że było to przydatne tylko w przypadku: Database-> Java-> XML and I potrzebujesz XML-> Java-> Baza danych. Będę miał inny wygląd, aby się upewnić, dzięki. – Kevin

+0

@Mowgli - MOXy jak każda implementacja JAXB (JSR-222) może rozpoczynać od klas java lub schematu XML. –

Powiązane problemy