bloggers bloggers

Marco Napolitano
Messaggi: 79
Stelle: 0
Data: 17/02/22
Jader Jed Francia
Messaggi: 63
Stelle: 0
Data: 18/02/21
Paolo Gambetti
Messaggi: 2
Stelle: 0
Data: 11/11/19
Katia Pazzi
Messaggi: 1
Stelle: 0
Data: 27/06/19
Ezio Lombardi
Messaggi: 11
Stelle: 0
Data: 10/04/18
Chiara Mambretti
Messaggi: 25
Stelle: 0
Data: 27/02/17
Serena Traversi
Messaggi: 3
Stelle: 0
Data: 21/07/16
Francesco Falanga
Messaggi: 8
Stelle: 0
Data: 14/06/16
Antonio Musarra
Messaggi: 2
Stelle: 0
Data: 18/11/13
Simone Celli Marchi
Messaggi: 6
Stelle: 0
Data: 09/07/13
Indietro

InfrastructureUtil e connessioni al Database

A volte potrebbe servirvi la connessione diretta al database per farci sopra delle query, ma in Liferay la cosa potrebbe sembrare un po' complicata da fare, perché l'architettura applicativa è abbastanza complessa e trovare l'oggetto Connection potrebbe non essere semplice!

Invece i nostri amici hanno messo a disposizione una classe di utilità che rende le cose molto semplici: lacom.liferay.portal.kernel.util.InfrastructureUtil.

Che cosa fa di magico questa classe? Beh, sostanzialmente esporta tutti i servizi di infrastruttura verso il client che le chiama, esponendo dei metodi statici per recuperare:

  • getDataSource(): il datasource

  • getMailSession(): la javax.mail.Session per inviare mail

  • una serie di altri metodi per accedere ad altri oggetti di infrastruttura! :)

Ora voi direte: ok, abbiamo la connessione al database -attraverso il DataSource-, ma come facciamo a restituirla al pool, una volta che l'abbiamo utilizzata? Dobbiamo fare la conn.close() e gestire le eccezioni che vengono sollevate?

Oppure vi potreste domandare "ma come faccio a prendere una connessione da un JNDI name che non è quello "di default"?" Oppure: "ma non esiste un altro modo più semplice per aver accesso all'oggetto Connection?"

Oh, ma quante domande fate?? :D

Scherzi a parte, per queste operazioni, invece, vi viene in aiuto un'altra classe di utilità che i progettisti di Liferay hanno realizzato per noi!

Nel dettaglio, stiamo parlando della com.liferay.portal.kernel.dao.jdbc.DataAccess.

Questa classe, oltre ad esporre i metodi per recuperare la connessione di default (ovviamente espone un metodo getConnection()), espone altri metodi statici come:

  • getConnection(String location): recupera una connessione dato il JNDI name

  • svariati metodi di cleanUp per pulire Connection, Statement e ResultSet

Spero di avervi alleviato un po' di pene e sofferenze evitandovi di cercare all'interno del core la classe che fa più al caso vostro!

Ovviamente le sorprese sul database di Liferay non finiscono qui, ma per il momento questo penso vi possa bastare! ;)

Alla prossima! ;)

Commenti
Nessun commento. Vuoi essere il primo.