Mysql
 sql >> Database >  >> RDS >> Mysql

JDBC VS Ibernazione

Risolvere i problemi sopra elencati:

1. Hibernate non può connettersi con un database "Esistente". Cerca sempre di crearne uno tutto suo.

Questo è sbagliato. L'ibernazione può connettersi a un database esistente e non sempre tenta di ricrearlo. Dovresti solo disattivare parametri come hbm2ddl. auto .

2. Il nostro database potrebbe accedere dalla stessa applicazione che si trova su piattaforme diverse (cloud, server, VPS, Personal Computer). L'ibernazione può creare problemi a causa della memorizzazione nella cache in questa situazione.

Hibernate ha una cache regolabile, quindi anche questo non è un problema.

3. Non ci piace mai dare il "lavoro di creazione della tabella" al codice java. Creiamo le tabelle manualmente, sempre.

Nessun problema. Vedi p.1 sopra. Inoltre ci sono diverse librerie utili per la creazione e l'aggiornamento indiretti di tabelle (ad es. liquibase ) che può essere utilizzato in coppia con l'ibernazione perfettamente.

4. Potremmo dover utilizzare istruzioni SQL molto lunghe e complesse. L'ultima volta abbiamo utilizzato un'istruzione con più di 150 righe, unendo più di 20 tabelle. Dubitiamo se affronteremo problemi in questo quando si tratta di Hibernate.

Puoi sempre utilizzare chiamate JDBC dirette e richiamare query SQL native tramite ibernazione, se necessario.

5. Il nostro codice SQL è bello e standard. Il codice generato da Hibernate sembra essere un po' sporco per noi.

Ancora una volta, se devi invocare un codice SQL complicato dalla logica invece di ibernare generato automaticamente, puoi farlo.

6. Usiamo sempre MySQL. Non utilizzare mai nessun altro DB.

Non è affatto un problema. Hibernate ha un supporto speciale per il dialetto MySQL:org.hibernate.dialect.MySQLDialect .

7. L'applicazione che creiamo richiede la massima sicurezza, relativa al medico. Se almeno un record di dati è trapelato, abbiamo finito.

I problemi di sicurezza non sono correlati alle tecniche ORM. Hibernate è solo un livello logico e conveniente orientato agli oggetti tra le chiamate JDBC del database puro e gli strumenti dei programmatori. Non influisce in alcun modo sulla sicurezza della rete comune.