Hibernate-początek

0

Witam,
Czy zna ktoś jakiś konkretny tutorial o hibernate, który pokazałby jak stworzyć jakąś prostą aplikację??
Przeczytałem już "Hibernate w akcji", "Hibernate od nowicjusza do profesjonalisty", co prawda wiedza tu przedstawiona jest dość duża, ale chyba najlepiej uczyć sie na jakichś przykładach.

Z góry dzięki za odpowiedzi

p.s
Proszę też o Wasze sugestie\podpowiedzi co do nauki Hibernate, bo na pewno każdy kiedyś był na samym początku i jakoś przechodził przez to wszystko

0

Najlepiej to uczyć się w praktyce. Spróbuj sobie zainstalować wordpressa i za pomocą Hibernate czytać jego bazę. Fajna zabawa.

0

Powiedzcie mi bo np. jeśli zaczynałem naukę JDBC to najpierw stworzyłem sobie bazę i później pisałem api dla tej bazy, a w przypadku Hibernate z tego co wyczytałem w książkach wynika że bazę tworzy się w trakcie pisania aplikacji (czy jestem w błędzie??). A z drugiej strony jeśli już bazę będę miał to pliki odwzorowań muszę sporządzać na podstawie posiadanej bazy??

Zacząłem już pisać sobie jakieś proste api na podstawie tutka p.Laskowskiego no i wszystko działa, ale to taki dosyć prosty kurs, a co dalej??

Sorry że tak truje, ale chciałbym się nauczyć tak jak to powinno być, a najlepsze doświadczenie zawsze można uzyskać od kogoś kto sie na tym zna :)

0

To zależy. Hibernate, a ogólniej JPA (które z niego mocno czerpie), potrafi wygenerować bazę na podstawie struktury klas. Trzeba tylko odpowiednią flagę w konfiguracji ustawić i masz. Jeżeli posiadasz gotową bazę to są narzędzia np. Hibernate IDE for Eclipse, które pozwalają na wygenerowanie klas na podstawie struktury bazy danych. Klasy takie trzeba oczywiście później jeszcze odpowiednio poprawić i dostroić, bo czasami tworzą się różne potworki. Wynika to z mechanizmu "SI" takiego generatora, który próbuje dobrać mapowania na podstawie zarówno meta danych tabel (klucze obce, indeksy) jak i nazw tabel (szczególnie tabele łączące).

Na początek proponuję być pisał obiekty i nie przejmował się tym co tworzy hibernate. Jak poznasz różne jego "odchyły" i kiedy strzela focha to będziesz mógł zabrać się do automatycznego generowania klas z bazy.

0
Koziołek napisał(a)

To zależy. Hibernate, a ogólniej JPA (które z niego mocno czerpie), potrafi wygenerować bazę na podstawie struktury klas. Trzeba tylko odpowiednią flagę w konfiguracji ustawić i masz.

JPA tego nie ma, przeczytaj specyfikacje. To jest dodatek ktory tak sie sklada ze implementuje prawie kazdy prowider, ale kazdy inaczej, kazdy inaczej konfiguruje. Wiec mowic ze to jest cecha JPA to nieprawdziwa nieprawda.

Hibernate ma kilka sposobow bydowania aplikacji, jak jest napisane w Java Persistence in Action (Bernard, King), w tym 2 ponizsze:
a) top down - masz klasy, z nich budujesz schemat bazy (na poczatek wystarczy ten co tworzy hibernate, ale do produkcji powinien nad tym przysiasc ktos kompetentny - DBA)
b) bottom up - masz schemat (najprawdopodobniej z jakiejs aplikacji legacy ktorej nowa wersje chcesz zrobic), z niego generujesz sobie klasy mapujace, robisz jakiestam usprawnienia i poprawki

Dla nowych projektow zalecane jest top-down (model obiektowy najpierw, schemat pozniej na podstawie tego).

0

@::. tobie jak widać zawsze trzeba napisać jak dziecku. Wszyscy wiodący dostawcy implementacji JPA dostarczają funkcjonalność tworzenia schematu bazy danych przy pierwszym połączeniu.

0

Przeciez to napisalem. Ty napisales ze to jest cecha JPA, a to nieprawda, to jest cecha kazdego z providerow osobna, o ktorej w specyfikacji JPA nie ma mowy.

Wiem, czepiam sie...

0

mysle ze warto dopiąć do projektu baze mysql'a, żeby w trakcie pracy podglądać jakie tabelki tak naprawdę zostały wygenerowane i eksperymentować.

Jak dojdziesz do wprawy z odwzorowaniem to później HQL i pójdzie z górki.

Chyba, że koledzy podpowiedzą jak podejrzeć strukturę bazy przy wykorzystaniu:

<property name="hibernate.connection.url" value="jdbc:hsqldb:mem:test"/>

??

0

Czyli generalnie widzę, że tak kolorowo nie będzie, ale jak na razie coś mi tam wychodzi.
Ja używam PostgreSQL, a api pisze w netbeans tylko wersja 6.5 a teraz wyczytałem, że od wersji 6.9 bodajże jest już bardzo ułatwiona obsługa Hibernate i chyba będę musiał sobie go przeinstalować.

W razie problemów będę już pytał o konkrety i mam nadzieje, że pomożecie.
Na razie dzięki za podpowiedzi

0

The owner of MySQL is Oracle, mkay, and Oracle is baaad, mkay, don't use it, mkay, don't be baaaad mkay...

Z javowych to polecam H2 zamiast HSQL, bron Boze JavaDB (aka Derby).

0

Bylo pytanie jak sobie podgladac baze z 'mem'. W H2 pisza:
"In-memory can be accessed remotely (or from multiple processes in the same machine) using TCP/IP or SSL/TLS. An example database URL is: jdbctcp://localhost/mem:db1."
Jesli mozna wiec z innego procesu sie polaczyc z baza danych 'mem', to mozna i podlaczyc sie standardowym programikiem do zarzadzania baza. Jak to zrobic zalezy od narzedzia. Nie wiem czy w HSQLDB takie cos jest dostepne.

Postgres to bardzo dobry wybor.

0

@Freakman, trzeba mieć trochę wyobraźni, bo można tak skonfigurować Hibernate by pokazywał DDL w trakcie tworzenia struktury bazy.

Dodajesz:

<property name="org.hibernate.tool.hbm2ddl" value="true"/>

I zmieniasz loglevel w log4j na debug.

Wypluje wtedy zapytania tworzące bazę danych. To już jest coś.

1 użytkowników online, w tym zalogowanych: 0, gości: 1