XDoclet + Hibernate

  1. Wstęp
    Aby Hibernate mógł poprawnie działać, musimy określić mapowanie pomiędzy naszym modelem obiektowym (klasami, które stworzyliśmy), a bazą danych (ORM - object/relational mapping). Informacje dotyczące tych mappingów znajdują sie w plikach XML (*.hbm.xml). Tworzenie i edycja XML są dość wygodne, o ile dysponuje się oczywiście jakimś dobrym narzędziem. Jednak wciąż musimy zamieszczać w różnych plikach dwukrotnie te same informacje. Jest to czasem dość kłopotliwe i dlatego dobrze byłoby się pozbyć tego typu niedogodności i zautomatyzować proces tworzenia plików *.hbm.xml.



  2. Jak to działa ?
    Istnieje do tego kilka narzędzi. Jedno z nich nazywa się XDoclet. XDoclet na podstawie odpowiednich komentarzy Javadoc zamieszczonych w klasach generuje nam określone pliki XML. XDoclet stosuje się do tworzenia deskryptorów EJB, a także w wielu innych miejscach. W naszym przypadku zastosowanie tego narzędzie spowoduje wygenerowanie plików *.hbm.xml.
    W naszych przykładach korzystaliśmy z najnowszej wersji XDoclet 1.2.3, którą można ściągnąć tutaj.



  3. Co po kolei ?
    Aby projekt Hibernate wykorzystujący narzędzie XDoclet mógł działać, należy załączyć następujące bliblioteki (najlepiej jest wewnątrz katalogu lib stworzyć katalog xdoclet), X.X.X oznacza wersje XDoclet:
    Wewnątrz pliku build.xml należy zdefiniować nowego taska: hibernatedoclet, patrz tutaj, a następnie stworzyć nowego targeta (najlepiej o nazwie generate), zależącego (depend) od targeta compile, który będzie korzystał z tego taska.
    Co oznaczają kolejne atrybuty taska hibernatedoclet ? Ponadto znacznik hibernate informuje nas o wersji hibernate, dla której generujemy te mappingi.

    Aby mappingi mogły być wygenerowane musimy jeszcze dodać odpowiednie komentarze do plików *.java zawierających klasy, odpowiadające tabelom (komentarze umieszczamy nad metodami get(), odpowiadającymi danym polom):
    Ponadto każdy komantarz javadoc (czyli np. @hibernate.id) może mieć jeszcze następujące 'atrybuty': Strona z opisem znaczenia wszystkich komentarzy XDoclet znajduje się tutaj.
    Teraz możemy już uruchomić podany przykład:
    $ ant generate - najpierw generujemy mappingi
    $ ant run - potem uruchamiamy program