Fórum

Uso del database nelle portlet (logica della struttura)

thumbnail
Adriano de Gironimo, modificado 15 Anos atrás.

Uso del database nelle portlet (logica della struttura)

New Member Postagens: 14 Data de Entrada: 12/08/08 Postagens Recentes
Salve a tutti,
sto sviluppando una portlet per ragioni universitarie.
Per ora mi sto limitando a fare degli esempi stupidi, come una rubrica telefonica, per capire bene il funzionamento.

Sto lavorando in ambiente ext. L'unica documentazione che ho trovato è il file powerpoint nella documentazione ufficiale, ed in particolare struts-portlet-3.ppt parla dell'interazione con il database.

Viene richiesto di creare il file service.xml e fare un "ant build-service", viene quindi creata una struttura di packages e mi dice di riempirla con del codice che è riportato nelle slide.

Il mio problema è che non ho capito la logica alla base di quel codice ed alla base della struttura che il comando "ant" ha creato, per cui cercando di adattare il codice a quello che serve a me, non riesco neanche a far funzionare una rubrica telefonica.
Premetto che a livello logico sono abituato alle normali connessioni al database in cui connetto, faccio il ciclo sul recordset e chiudo.

Non sono riuscito a trovare in rete delle informazioni che mi spiegassero la logica alla base di questo modo di operare, qualcuno può aiutarmi a capirci qualcosa o indicarmi qualche fonte esaustiva?

Grazie!!

________________
Adriano
thumbnail
Mauro Mariuzzo, modificado 15 Anos atrás.

RE: Uso del database nelle portlet (logica della struttura)

Regular Member Postagens: 142 Data de Entrada: 23/07/07 Postagens Recentes
Ciao

nel Wiki trovi diverso materiale che spiega i "service" ed il ServiceBuilder.

Quest'ultimo è, in pratica, un tools realizzato dal team Liferay per generare le interfacce e le classi per la Persistenza, EJB, l'accesso remoto tramite WebServices o tramite Ajax.

Ricordo che Ed Shin aveva postato nel suo Blog (ma ora è accessibile solo attraverso la Document Library) sette portlet/lezioni su Lifreray. La quinta trattava il ServiceBuilder.

In sintesi:

  • nel file service.xml indichi la struttura delle informazioni (la struttura delle tavole)
  • il tool genera le interfacce Model che mappano i record
  • e le classi ModelImpl che implementano le interfacce con i getter e setter (li conosco dal service)
  • poi crea le interfacce per i servizi di accesso ai dati
  • servizi locali (es UserLocalServiceUtil) e remoti (UserServiceUtil)
  • e poi crea le classi implementative che deduce dal service.xml (per add, update, delete, findByPK)
  • e le classi implementative vuote per consentirti di aggiungere nuovi metodi


Se tu aggiungi il metodo findByCreateDate() nella UserLocalServiceImpl, ad esempio, una successiva esecuzione del comando ant build-services, attraverso il refactory, aggiunge tale metodo nelle varie interfacce del servizio
thumbnail
Adriano de Gironimo, modificado 15 Anos atrás.

RE: Uso del database nelle portlet (logica della struttura)

New Member Postagens: 14 Data de Entrada: 12/08/08 Postagens Recentes
Grazie mille, ora studio un po' il materiale che mi hai fornito, mi sembra allora che quindi questo sia come un sostituto di Hibernate..
Inizialmente stavo provando ad usare Hibernate, senza fare però nessun build-service.. ma non mi stava funzionando.. pensi che convenga buttarmi su Hibernate?
thumbnail
Mauro Mariuzzo, modificado 15 Anos atrás.

RE: Uso del database nelle portlet (logica della struttura)

Regular Member Postagens: 142 Data de Entrada: 23/07/07 Postagens Recentes
I 'service' di Liferay non sostituiscono Hibernate, lo nascondono per le operazioni tipiche quando hai a che fare con una tabella in un database.

Nei metodi che ti troverai a scrivere nella classe XXXLocalServiceImpl potresti voler fare una query e quindi usi Hibernate direttamente.

Per scrivere la query puoi usare una stringa SQL (come in molti portlet) oppure le classi di Hibernate. Dipende dalla complessità e portabilità. Nei miei portlet le query sono abbastanza semplici quindi ho sempre usato l'SQL
Simona Cambo, modificado 10 Anos atrás.

RE: Uso del database nelle portlet (logica della struttura)

New Member Postagens: 23 Data de Entrada: 07/11/13 Postagens Recentes
Ciao,
sono nuova su Liferay. Ho la necessita di leggere un'informazione da Db Oracle 10g per capire se visualizzare o meno una jsp. Posso effettuare la semplice query scritta in SQL da java? Ma devo aprire una connessione, utilizzare i driver jdbc di Oracle? Basta scrivere la semplice procedura che inserisco subito dopo?

Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc.default.url=jdbc:oracle:thin:@ip:1521:service";
String nomeUtente = "xxxxx";
String password = "yyyyyy";

Connection conn = DriverManager.getConnection(url, nomeUtente, password);

Statement stmt = conn.createStatement();

ResultSet rset = stmt.executeQuery("SELSECT * FROM utente");

Grazie.
thumbnail
Nicola De Venuto, modificado 10 Anos atrás.

RE: Uso del database nelle portlet (logica della struttura)

Junior Member Postagens: 75 Data de Entrada: 12/12/07 Postagens Recentes
1. Il ServiceBuilder genera i service che operano sul database centrale di liferay. Cio' e' utile quando si vuole usare le tabelle/query in varie portlet
Inoltre utilizza la Connection globale di Liferay e anche le cache e transaction del portal.

2. QUando si fa una portlet indipendente, conviene utilizzare una altra connection che puo' andare di nuovo al database centrale oppure anche a uno esterno.
In questo caso si puo' scegliere una qualsiasi tecnologia java : Hibernate, JDBC, EJB ...........


Nella maggior parte dei casi conviene la strada 2.
I service eventualmente vanno studiati bene in quanto creano
-) Overhead di apprendimento
-) Overhead di deploy

Buon lavoro



ing. Nicola De Venuto
X-GATE srl
http://www.x-gate.it
giuseppe bianchetti, modificado 15 Anos atrás.

RE: Uso del database nelle portlet (logica della struttura)

Junior Member Postagens: 32 Data de Entrada: 15/07/08 Postagens Recentes
ciao anche io ho problemi con il service builder... ovvero ho provato a generare 1 "tabella" e i metodi annessi ed è andato bene ...provo a generare la seconda...quindi ho riscritto il service.xml e rilancio ant...e mi da errore...ma è questa la procedura corretta? creare un service.xml alla volta e riempire con i metodi che ti servono il service layer??


è.s mauro mi daresti un contatto pvt?
thumbnail
Mauro Mariuzzo, modificado 15 Anos atrás.

RE: Uso del database nelle portlet (logica della struttura)

Regular Member Postagens: 142 Data de Entrada: 23/07/07 Postagens Recentes
Un service.xml può contenere diverse entity come puoi vedere nel file presente in portal-impl/src/com/liferay/portal.

Che versione di Liferay stai usando? Stai sviluppando in ext o in plugins?