sql >> Databasteknik >  >> RDS >> Mysql

JDBC VS Hibernate

Svara på frågor som anges ovan:

1. Hibernate kan inte ansluta till en "Befintlig" databas. Den försöker alltid skapa en egen.

Detta är fel. Hibernate kan ansluta till en befintlig databas, och den försöker inte alltid återskapa den. Du bör bara stänga av parameter som hbm2ddl. auto .

2. Vår databas kan komma åt med samma applikation som finns på olika plattformar (moln, server, VPS, persondator). Hibernate kan skapa problem på grund av dess cachning i den här situationen.

Hibernate har en justerbar cache, så detta är inte heller ett problem.

3. Vi gillar aldrig att ge "tabellskapande arbete" till java-koden. Vi skapar tabeller manuellt, alltid.

Inga problem. Se s.1 ovan. Dessutom finns det flera praktiska bibliotek för indirekt tabellskapande och uppdatering (t.ex. liquibase ) som kan användas i par med viloläge perfekt.

4. Vi kan behöva använda mycket långa och komplexa SQL-satser. Förra gången använde vi ett uttalande med mer än 150 rader, vilket sammanfogade mer än 20 tabeller. Vi tvivlar på om vi kommer att möta problem i detta när det kommer till Hibernate.

Du kan alltid använda direkta JDBC-anrop och anropa inbyggda SQL-frågor via viloläge, om det behövs.

5. Vår SQL-kod är trevlig och standard. Hibernate-genererad kod verkar vara lite smutsig för oss.

Återigen, om du måste anropa lite logisk komplicerad SQL-kod istället för automatiskt genererad viloläge - du kan göra det.

6. Vi använder alltid MySQL. Använd aldrig någon annan DB.

Inte ett problem alls. Hibernate har speciellt stöd för MySQL-dialekt:org.hibernate.dialect.MySQLDialect .

7. Applikationen vi skapar kräver maximal säkerhet, relaterad till medicinsk. Om minst en datapost läcker är vi klara.

Säkerhetsproblem är inte relaterade till ORM-tekniker. Hibernate är bara ett logiskt och bekvämt objektorienterat lager mellan rena databas JDBC-anrop och programmerares verktyg. Det påverkar inte på något sätt den gemensamma nätsäkerheten.



  1. Utvärdera när ett uttryck i en fråga utvärderas

  2. Vad är motsvarande uttalande av DBCC INPUTBUFFER(@@SPID) (som ger SQL-satsen för aktuell anslutning eller specificerad anslutning) i MYSQL?

  3. SQL - skriv ut många ord mellan varje kolumn med många villkor

  4. Finns det ett mer effektivt sätt att göra paginering i Hibernate än att köra urvals- och räkningsfrågor?