Hibernate-początek

Hibernate-początek
M1
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 6 lat
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

Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:10 dni
  • Lokalizacja:Stacktrace
  • Postów:6821
0

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


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
M1
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 6 lat
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 :)

Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:10 dni
  • Lokalizacja:Stacktrace
  • Postów:6821
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.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
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).

Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:10 dni
  • Lokalizacja:Stacktrace
  • Postów:6821
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.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
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...

Freakman
  • Rejestracja:ponad 18 lat
  • Ostatnio:ponad 7 lat
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:

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

??


play hard..go pro.
M1
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 6 lat
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: jdbc:h2:tcp://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.

Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:10 dni
  • Lokalizacja:Stacktrace
  • Postów:6821
0

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

Dodajesz:

Kopiuj
<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ś.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)