Odpowiedzi na pytania wymienione powyżej:
1. Hibernate nie może połączyć się z „istniejącą” bazą danych. Zawsze stara się stworzyć własny.
To jest źle. Hibernacja może połączyć się z istniejącą bazą danych i nie zawsze próbuje ją odtworzyć. Powinieneś po prostu wyłączyć parametr, taki jak hbm2ddl. auto
.
2. Dostęp do naszej bazy danych może mieć ta sama aplikacja, która jest na różnych platformach (chmura, serwer, VPS, komputer osobisty). Hibernacja może sprawiać problemy z powodu buforowania w tej sytuacji.
Hibernate ma regulowaną pamięć podręczną, więc to również nie stanowi problemu.
3. Nigdy nie lubimy dawać "pracy nad tworzeniem tabel" kodowi java. Tabele zawsze tworzymy ręcznie.
Nie ma problemu. Patrz s. 1 powyżej. Ponadto istnieje kilka wygodnych bibliotek do pośredniego tworzenia i aktualizacji tabel (np. liquibase ), które mogą być doskonale używane w parze z hibernacją.
4. Być może będziemy musieli użyć bardzo długich i złożonych instrukcji SQL. Ostatnim razem użyliśmy zestawienia składającego się z ponad 150 linii, łączącego ponad 20 tabel. Wątpimy, czy napotkamy na problemy, jeśli chodzi o Hibernate.
Zawsze możesz użyć bezpośrednich wywołań JDBC i wywoływać natywne zapytania SQL przez hibernację, jeśli jest to konieczne.
5. Nasz kod SQL jest ładny i standardowy. Kod generowany przez hibernację wydaje się być dla nas trochę brudny.
Ponownie, jeśli musisz wywołać jakiś skomplikowany logiczny kod SQL zamiast automatycznie generowanego hibernacji - możesz to zrobić.
6. Zawsze używamy MySQL. Nigdy nie używaj żadnego innego DB.
Nie ma problemu. Hibernate ma specjalną obsługę dialektu MySQL:org.hibernate.dialect.MySQLDialect
.
7. Tworzona przez nas aplikacja wymaga maksymalnego bezpieczeństwa związanego z medycyną. Jeśli wycieknie co najmniej jeden rekord danych, to koniec.
Kwestie bezpieczeństwa nie są związane z technikami ORM. Hibernate
jest po prostu logiczną i wygodną warstwą obiektową pomiędzy czystymi wywołaniami JDBC bazy danych a narzędziami programistycznymi. Nie wpływa to w żaden sposób na powszechne bezpieczeństwo sieci.