JavaRush /Java Blog /Random-IT /Domande per l'intervista in ibernazione
Dr-JohnZoidberg
Livello 41
Киев

Domande per l'intervista in ibernazione

Pubblicato nel gruppo Random-IT
Questo articolo è una traduzione e un miglioramento di articoli stranieri (un elenco di risorse è elencato alla fine dell'articolo). Le risposte ad alcune domande vengono ampliate, vengono forniti collegamenti a risorse di terze parti che contengono risposte che potrebbero sorgere durante il processo di lettura. 1) Cos'è l'ibernazione? È un framework per la mappatura relazionale a oggetti di entità nei database relazionali tradizionali. Le principali caratteristiche del framework: 1) Generazione e aggiornamento automatico delle tabelle nei database; 2) Poiché le principali query al database (salvataggio, aggiornamento, eliminazione e ricerca) sono presentate come metodi del framework, il codice che scrive lo sviluppatore è notevolmente ridotto; 3) Fornisce l'uso di un linguaggio simile a SQL (HQL - linguaggio di query di ibernazione). Le query HQL possono essere scritte insieme a oggetti dati (classi POJO preparate per lavorare con un database). 2) Come andare in letargoaiuta con la programmazione? Hibernate implementa una serie di funzionalità che semplificano notevolmente il lavoro dello sviluppatore. — Una di queste funzionalità è che l'ibernazione consente allo sviluppatore di evitare di scrivere la maggior parte delle query SQL (sono già implementate, è sufficiente utilizzare i metodi forniti dal framework). — Sotto il cofano, Hibernate ha una serie di strumenti utili che velocizzano significativamente l'applicazione, i più notevoli dei quali sono la memorizzazione nella cache a due livelli e la messa a punto dei prelievi pigri e di recupero. — Genera tabelle nel database stesso. 3) Metodi per configurare il lavoro con Hibernate. Esistono quattro modi per configurare il lavoro con Hibernate: - utilizzando le annotazioni; - hibernate.cfg.xml; - proprietà.hibernate; - persistenza.xml. Il metodo di configurazione più comune: tramite annotazioni e il file persistence.xml, come per i file hibernate.properties e hibernate.cfg.xml, allora hibernate.cfg.xml è più importante (se l'applicazione ha entrambi i file, allora le impostazioni da è accettato il file hibernate.cfg.xml). La configurazione con annotazioni, sebbene conveniente, non è sempre possibile; ad esempio, se si desidera avere configurazioni di entità diverse per database diversi o per situazioni diverse, è necessario utilizzare file di configurazione xml. 4) Quali interfacce chiave utilizza Hibernate? Ci sono cinque interfacce chiave utilizzate in ogni applicazione relativa a Hibernate: - Interfaccia di sessione; -Interfaccia SessionFactory; — Interfaccia di configurazione; — Interfaccia di transazione; — Interfacce di query e criteri. 5) Qual è il ruolo dell'interfaccia Session in Hibernate? La sessione è l'interfaccia principale responsabile della comunicazione con il database. Aiuta anche a creare oggetti di richiesta per ottenere oggetti persistenti. (oggetto persistente - un oggetto che è già nel database; oggetto richiesta - un oggetto che si ottiene quando riceviamo il risultato di una query nel database, è con questo che funziona l'applicazione). L'oggetto Session può essere ottenuto da SessionFactory: Session session = sessionFactory.openSession(); Il ruolo dell'interfaccia Session: è un wrapper per la connessione jdbc al database; (https://ru.wikipedia.org/wiki/Java_Database_Connectiv..) - è una fabbrica per le transazioni (secondo la documentazione ufficiale transazione - consente all'applicazione di definire unità di lavoro, il che, in sostanza, significa che la transazione definisce i confini delle operazioni associate al database). — è il custode della cache obbligatoria di primo livello. 6) Qual è il ruolo dell'interfaccia SessionFactory in Hibernate? È dall'oggetto SessionFactory che otteniamo oggetti di tipo Session. Esiste una sola SessionFactory per l'intera applicazione e viene inizializzata all'avvio dell'applicazione. SessionFactory memorizza nella cache i metadati e le query SQL che vengono utilizzate frequentemente dall'applicazione durante il funzionamento. Inoltre memorizza nella cache le informazioni ricevute in una delle transazioni e può essere utilizzata in altre transazioni. L'oggetto SessionFactory può essere ottenuto utilizzando la seguente chiamata: SessionFactory sessionFactory = configurazione.buildSessionFactory(); 7) Quali tipi di raccolte sono fornite in Hibernate? Borsa, Set, Elenco, Mappa, Array. 8) Cos'è la collezione Bag type e perché viene utilizzata? Nella sua implementazione, il tipo di raccolta Bag è molto simile a Set, la differenza è che Bag può memorizzare valori duplicati. Bag memorizza un elenco di elementi non indicizzati. La maggior parte delle tabelle nel database dispongono di indici che mostrano la posizione di un elemento di dati rispetto a un altro; questi indici sono rappresentati nella tabella come una colonna separata. Con la mappatura relazionale degli oggetti, i valori di una colonna di indice vengono mappati su un indice in un Array, un indice in un List o una chiave in una Map. Se è necessario ottenere una raccolta di oggetti che non contengono dati di indice, è possibile utilizzare raccolte di tipo Bag o Set (le raccolte contengono dati in forma non ordinata, ma possono essere ordinate in base alla richiesta). 9) Qual è la differenza nel funzionamento dei metodi load();? e prendi();? metodo carico(); solitamente utilizzato quando non si è sicuri che l'oggetto richiesto sia già nel database. Se l'oggetto non viene trovato, il metodo lancia un'eccezione. Se l'oggetto viene trovato, il metodo restituisce un oggetto proxy, che è un collegamento all'oggetto situato nel database (la richiesta al database non è stata ancora effettuata, una specie di lazy retrieval), una richiesta diretta al database quando accediamo direttamente all'oggetto richiesto tramite un oggetto proxy. metodo get(); utilizzato in questo caso, non sei sicuro al 100% se l'oggetto richiesto è nel database. Nel caso di accesso ad un oggetto inesistente, il metodo get(); restituirà null. Se l'oggetto viene trovato, il metodo get(); restituirà l'oggetto stesso e la query sul database verrà effettuata immediatamente. 10) Cos'è il recupero Lazy in Hibernate? Il tipo di checkout lento in Hibernate è associato alle entità foglia (figlio) e definisce una politica di checkout condivisa se c'è una richiesta di checkout di un'entità genitore. Un semplice esempio: esiste un'entità Casa. Memorizza informazioni sul suo numero, via, numero di appartamenti e informazioni sulle famiglie che vivono negli appartamenti; queste famiglie formano un'entità figlia rispetto all'entità Casa. Quando richiediamo informazioni su una Casa, potrebbe essere del tutto superfluo per noi conoscere informazioni sulle famiglie che la abitano, qui ci viene in aiuto il lazy fetching, che ci permette di configurare l'entità Casa in modo che vengano fornite solo informazioni sulle famiglie su richiesta, questo annebbia notevolmente la richiesta e velocizza l'applicazione. ©dev-bay La maggior parte delle tabelle nel database dispongono di indici che mostrano la posizione di un elemento di dati rispetto a un altro; questi indici sono rappresentati nella tabella come una colonna separata. Con la mappatura relazionale degli oggetti, i valori di una colonna di indice vengono mappati su un indice in un Array, un indice in un List o una chiave in una Map. Se è necessario ottenere una raccolta di oggetti che non contengono dati di indice, è possibile utilizzare raccolte di tipo Bag o Set (le raccolte contengono dati in forma non ordinata, ma possono essere ordinate in base alla richiesta). 9) Qual è la differenza nel funzionamento dei metodi load();? e prendi();? metodo carico(); solitamente utilizzato quando non si è sicuri che l'oggetto richiesto sia già nel database. Se l'oggetto non viene trovato, il metodo lancia un'eccezione. Se l'oggetto viene trovato, il metodo restituisce un oggetto proxy, che è un collegamento all'oggetto situato nel database (la richiesta al database non è stata ancora effettuata, una specie di lazy retrieval), una richiesta diretta al database quando accediamo direttamente all'oggetto richiesto tramite un oggetto proxy. metodo get(); utilizzato in questo caso, non sei sicuro al 100% se l'oggetto richiesto è nel database. Nel caso di accesso ad un oggetto inesistente, il metodo get(); restituirà null. Se l'oggetto viene trovato, il metodo get(); restituirà l'oggetto stesso e la query sul database verrà effettuata immediatamente. 10) Cos'è il recupero Lazy in Hibernate? Il tipo di checkout lento in Hibernate è associato alle entità foglia (figlio) e definisce una politica di checkout condivisa se c'è una richiesta di checkout di un'entità genitore. Un semplice esempio: esiste un'entità Casa. Memorizza informazioni sul suo numero, via, numero di appartamenti e informazioni sulle famiglie che vivono negli appartamenti; queste famiglie formano un'entità figlia rispetto all'entità Casa. Quando richiediamo informazioni su una Casa, potrebbe essere del tutto superfluo per noi conoscere informazioni sulle famiglie che la abitano, qui ci viene in aiuto il lazy fetching, che ci permette di configurare l'entità Casa in modo che vengano fornite solo informazioni sulle famiglie su richiesta, questo annebbia notevolmente la richiesta e velocizza l'applicazione. ©dev-bay La maggior parte delle tabelle nel database dispongono di indici che mostrano la posizione di un elemento di dati rispetto a un altro; questi indici sono rappresentati nella tabella come una colonna separata. Con la mappatura relazionale degli oggetti, i valori di una colonna di indice vengono mappati su un indice in un Array, un indice in un List o una chiave in una Map. Se è necessario ottenere una raccolta di oggetti che non contengono dati di indice, è possibile utilizzare raccolte di tipo Bag o Set (le raccolte contengono dati in forma non ordinata, ma possono essere ordinate in base alla richiesta). 9) Qual è la differenza nel funzionamento dei metodi load();? e prendi();? metodo carico(); solitamente utilizzato quando non si è sicuri che l'oggetto richiesto sia già nel database. Se l'oggetto non viene trovato, il metodo lancia un'eccezione. Se l'oggetto viene trovato, il metodo restituisce un oggetto proxy, che è un collegamento all'oggetto situato nel database (la richiesta al database non è stata ancora effettuata, una specie di lazy retrieval), una richiesta diretta al database quando accediamo direttamente all'oggetto richiesto tramite un oggetto proxy. metodo get(); utilizzato in questo caso, non sei sicuro al 100% se l'oggetto richiesto è nel database. Nel caso di accesso ad un oggetto inesistente, il metodo get(); restituirà null. Se l'oggetto viene trovato, il metodo get(); restituirà l'oggetto stesso e la query sul database verrà effettuata immediatamente. 10) Cos'è il recupero Lazy in Hibernate? Il tipo di checkout lento in Hibernate è associato alle entità foglia (figlio) e definisce una politica di checkout condivisa se c'è una richiesta di checkout di un'entità genitore. Un semplice esempio: esiste un'entità Casa. Memorizza informazioni sul suo numero, via, numero di appartamenti e informazioni sulle famiglie che vivono negli appartamenti; queste famiglie formano un'entità figlia rispetto all'entità Casa. Quando richiediamo informazioni su una Casa, potrebbe essere del tutto superfluo per noi conoscere informazioni sulle famiglie che la abitano, qui ci viene in aiuto il lazy fetching, che ci permette di configurare l'entità Casa in modo che vengano fornite solo informazioni sulle famiglie su richiesta, questo annebbia notevolmente la richiesta e velocizza l'applicazione. ©dev-bay query diretta al database quando accediamo direttamente all'oggetto richiesto tramite un oggetto proxy. metodo get(); utilizzato in questo caso, non sei sicuro al 100% se l'oggetto richiesto è nel database. Nel caso di accesso ad un oggetto inesistente, il metodo get(); restituirà null. Se l'oggetto viene trovato, il metodo get(); restituirà l'oggetto stesso e la query sul database verrà effettuata immediatamente. 10) Cos'è il recupero lento in Hibernate? Il tipo di checkout lento in Hibernate è associato alle entità foglia (figlio) e definisce una politica di checkout condivisa se c'è una richiesta di checkout di un'entità genitore. Un semplice esempio: esiste un'entità Casa. Memorizza informazioni sul suo numero, via, numero di appartamenti e informazioni sulle famiglie che vivono negli appartamenti; queste famiglie formano un'entità figlia rispetto all'entità Casa. Quando richiediamo informazioni su una Casa, potrebbe essere del tutto superfluo per noi conoscere informazioni sulle famiglie che la abitano, qui ci viene in aiuto il lazy fetching, che ci permette di configurare l'entità Casa in modo che vengano fornite solo informazioni sulle famiglie su richiesta, questo annebbia notevolmente la richiesta e velocizza l'applicazione. ©dev-bay query diretta al database quando accediamo direttamente all'oggetto richiesto tramite un oggetto proxy. metodo get(); utilizzato in questo caso, non sei sicuro al 100% se l'oggetto richiesto è nel database. Nel caso di accesso ad un oggetto inesistente, il metodo get(); restituirà null. Se l'oggetto viene trovato, il metodo get(); restituirà l'oggetto stesso e la query sul database verrà effettuata immediatamente. 10) Cos'è il recupero Lazy in Hibernate? Il tipo di checkout lento in Hibernate è associato alle entità foglia (figlio) e definisce una politica di checkout condivisa se c'è una richiesta di checkout di un'entità genitore. Un semplice esempio: esiste un'entità Casa. Memorizza informazioni sul suo numero, via, numero di appartamenti e informazioni sulle famiglie che vivono negli appartamenti; queste famiglie formano un'entità figlia rispetto all'entità Casa. Quando richiediamo informazioni su una Casa, potrebbe essere del tutto superfluo per noi conoscere informazioni sulle famiglie che la abitano, qui ci viene in aiuto il lazy fetching, che ci permette di configurare l'entità Casa in modo che vengano fornite solo informazioni sulle famiglie su richiesta, questo annebbia notevolmente la richiesta e velocizza l'applicazione. ©dev-bay
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION