Jak przetrwać projekt z MO.

1. Hibernate Tools.

1.1. Instalacja.

Jest kilka sposobów na zainstalowanie Hibernate Tools - albo ściągając dystrybucję JBoss IDE (eclipse dostosowany do tworzenia aplikacji bazodanowych), albo podając stronę update do "czystego" eclipse'a i ściągnąć z niej Hibernate Tools (trzeba będzie zainstalować wcześniej parę pakietów ze standardowych stron update eclipse'a). Trzeci sposób to ściagnięcie archiwum, rozpakowanie go do odpowiednich folderów eclipse'a i uruchomienie eclipse'a z przełącznikiem -clean (choć ze względu na wymaganie dodatkowych pluginów może nie działać z marszu).

1.2. Uwagi początkowe

1. koniecznie ściągnij sobie najnowszy Hibernate Core i Hibernate Annotations, bo może się zdarzyć jakaś niekompatybilność między tymi dwoma pakietami (mi się zdarzyła i 3 dni szukałem błędu).

2. Żeby korzystać z tych adnotacji EJB3 musisz dociągnąć ze strony hibernate'a pakiet Hibernate Annotations.

3. Klasy DAO korzystają z pakiety Entity Manager hibernate'a. nie wiem, czy to fajne, bo nie używałem.

4. Postgresql nie rozpoznaje wielkich i małych liter, zatem po tej inżynierii wstecznej będziesz musiał trochę popoprawiać nazwy klas (lub zostawić je wbrew konwencji). Jeśli masz do czynienia z MySQL, to nie ma tego problemu.

6. Żeby móc skorzystać z automatycznego generowania id w bazie Postgresql będziesz musiał stworzyć w bazie sekwencję o nazwie hibernate_sequence i w klasach do każdego id dodać taką adnotację:

@GeneratedValue(strategy=GenerationType.AUTO)

1.3. Generowanie klas POJO.

Poradnik jak wygenerować klasy POJO korzystając z Hibernate Tools. UWAGA: żeby klasy POJO można było wygenerować, baza danych pod aplikację musi być już gotowa (można ją wygenerować takimi narzędziami jak Azzurri Clay).

PLIK KONFIGURACYJNY HIBERNATE

1. Utworzyć plik konfiguracyjny:

new->other…->Hibernate->hibernate configuration file

2. Wypełnić formularz:

Session factory name: nic
Database dialect: PostgreSQL
**Driver class
:jedyny możliwy
Connection URL: jdbc:postgresql://localhost/NazwaBazy
Default Schema: nic
Default Catalog: nic
Username: nazwaUżytkownikaZalogowanego
Password: nic

3. Wybrać Finish na formularzu.

4. Jeśli łącząc się do bazy danych nie potrzebujesz hasła, należy dopisać do utworzonego pliku (np. zaraz po własności user):

        <property name="hibernate.connection.password"></property>

KONFIGURACJA KONSOLOWA

5. Utworzyć konfigurację konsolową:

new->other…->Hibernate->Hibernate Console Configuration

6. Wypełnić formularz tworzenia konfiguracji konsolowej w następujący sposób:

Name: jakaś nazwa konfiguracji
Property file: nic
Configuration file: utworzony w punktach 1 do 4 plik hibernate.cfg.xml
Entity Resolver: nic
Enable hibernate/ejb3 annotations: zaznaczone (w nowszej wersji trzeba zaznaczyć przycisk radio o nazwie 'Annotations (jdk 1.5+)')

7. Kliknąć Add JAR/Dir… (ten i następny punkt nie jest konieczny, jeśli ma się do czynienia z aplikacją JEE, w której w katalogu lib jest wrzucony odpowiedni sterownik, gdyż katalog ten razem z zawartością jest już domyślnie dodany do ściezki).

8. Wybrać plik jar sterownika do jdbc (np. postgresql-8.1-407.jdbc3.jar)

9. Kliknąć Finish

KONFIGURACJA GENERACJI KODU

10. Rozpocząć konfigurację generacji kodu:

Run->Hibernate Code Generation…->Hibernate Code Generation (jeśli tej pozycji nie ma w menu, należy ją Run, należy ją dodać, przechodząc do Window->Customize Perspective…->Commands->Available command groups i zaznaczając tam Run Hibernate Code Generation).

11. Kliknąć prawym przyciskiem myszy na Hibernate Code Configuration i wybrać new.

12. Nadać nazwę konfiguracji:

Name: jakaś nazwa naszej konfiguracji.

13. Wypełnić zakładkę Main:

Console configuration: wybrać utworzoną w punktach 5-9 konfigurację.
Output directory: jakikolwiek katalog do którego mają iść wygenerowane pliki
Reverse Engineer from JDBC connection: zaznaczone
Package: pakiet w jakim mają się znaleźć wygenerowane pliki.

14. Utworzyć i wybrać plik inżynierii wstecznej.

Reveng.xml: wybrać setup…->Create new-> wybrać katalog (np. katalog projektu)->next->kliknąć refresh.
UWAGA: jeżeli po kliknięciu refresh na liście Database Schema nie pojawi się rozwijalny element "public",
to znaczy, że coś jest nie tak z samą bazą i dostępem do niej.
Jeśli się pojawił, to wybieramy go i klikamy include…, po czym finish.

15. Zakładka Main ciąg dalszy:

Reveng. strategy: nic
Co do tych radio buttonów poniżej, to nie wiem, zostawiłem domyślne ustawienia.

16. Wypełnić zakładkę Exporters:

Use java 5 syntax: zaznaczone
Generate EJB3 annotations: zaznaczone (UWAGA, pliki będą importować biblioteki z pakietu Hibernate Annotations)
W polu exporters: zaznaczone Domain code, ew. coś więcej

17. Wybrać Run…

P.S. Nie wolno zapominać o dopisaniu własnych klas do pliku mapującego. Przykład takiego pliku z dopisanymi klasami:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost/JEEGroupware</property>
        <property name="hibernate.connection.username">astral</property>
        <property name="hibernate.connection.password"></property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
 
        <mapping class="com.wikidot.technojazda.pojo.Contact"/>
        <mapping class="com.wikidot.technojazda.pojo.ContactType"/>
        <mapping class="com.wikidot.technojazda.pojo.Event"/>
        <mapping class="com.wikidot.technojazda.pojo.EventAttenders"/>
        <mapping class="com.wikidot.technojazda.pojo.EventAttendersId"/>
        <mapping class="com.wikidot.technojazda.pojo.Issue"/>
        <mapping class="com.wikidot.technojazda.pojo.IssueComment"/>
        <mapping class="com.wikidot.technojazda.pojo.Milestone"/>
        <mapping class="com.wikidot.technojazda.pojo.Participant"/>
        <mapping class="com.wikidot.technojazda.pojo.Project"/>
        <mapping class="com.wikidot.technojazda.pojo.ProjectParticipation"/>
        <mapping class="com.wikidot.technojazda.pojo.Role"/>
    </session-factory>
</hibernate-configuration>

astralastral

O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-Share Alike 2.5 License.