Jakarta Struts e Hibernate: esempio di applicazione completa

Forum relativo ai framework per l'utilizzo della tecnologia JSP

Jakarta Struts e Hibernate: esempio di applicazione completa

Messaggioda alesslud » mar gen 29, 2008 9:51 am

Jakarta Struts e Hibernate: esempio di applicazione completa.

In questo momento è in corso di scrittura e l'applicazione potrebbe avere qualche problema.

L'applicazione è stata testata su MySql e JBoss e funziona anche se il framework usato è JSF
alesslud
Site Admin
 
Messaggi: 779
Iscritto il: mer nov 08, 2006 8:09 am

TestAction.java

Messaggioda alesslud » mar gen 29, 2008 11:43 am

package com.aquilasiti.action;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.actions.LookupDispatchAction;

import com.aquilasiti.bean.Anagrafica;
import com.aquilasiti.bean.Domicilio;
import com.aquilasiti.proxy.GenericService;


public class TestAction extends LookupDispatchAction {

public TestAction() {
super();
}

@Override
protected Map getKeyMethodMap() {
Map<String, String> map = new HashMap<String, String>();
map.put("test.parametro", "testaParametri");
return map;
}

public ActionForward testaParametri(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
try{
ActionMessages messaggi=new ActionMessages();
GenericService service = new GenericService();
Anagrafica anagrafica = new Anagrafica();
anagrafica = anagrafica.creaAnagrafica();
Domicilio domicilio = new Domicilio();
Set<Domicilio> listaDomicili = domicilio.creaDomicili();
anagrafica.setDomicilio(listaDomicili);
service.insertAnagrafica(anagrafica);
//service.readAnagrafica();

messaggi.add("messaggi", new ActionMessage(""));
this.addMessages(request, messaggi);

}catch(Exception e){
e.printStackTrace();
}

return (mapping.findForward("testgenerico"));
}

}
alesslud
Site Admin
 
Messaggi: 779
Iscritto il: mer nov 08, 2006 8:09 am

Anagrafica.java

Messaggioda alesslud » mar gen 29, 2008 11:44 am

package com.aquilasiti.bean;

import java.util.Set;

/*
* Created on 20-lug-2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/

/**
* @author Javadeveloper
*
* TODO To change the template for this generated type comment go to Window -
* Preferences - Java - Code Style - Code Templates
*/
public class Anagrafica extends BaseBO {

private String nome;

private String cognome;

private String indirizzo;

private String citta;

private String provincia;

private int telefono;

private Set<Domicilio> domicilio;

public Set<Domicilio> getDomicilio() {
return domicilio;
}

public void setDomicilio(Set<Domicilio> domicilio) {
this.domicilio = domicilio;
}

public int getTelefono() {
return telefono;
}

public void setTelefono(int telefono) {
this.telefono = telefono;
}

/**
* costruttore.
*/
public Anagrafica() {
super();
}

/**
* @return Returns the citta.
*/
public String getCitta() {
return citta;
}

/**
* @param citta
* The citta to set.
*/
public void setCitta(String citta) {
this.citta = citta;
}

/**
* @return Returns the cognome.
*/
public String getCognome() {
return cognome;
}

/**
* @param cognome
* The cognome to set.
*/
public void setCognome(String cognome) {
this.cognome = cognome;
}

/**
* @return Returns the indirizzo.
*/
public String getIndirizzo() {
return indirizzo;
}

/**
* @param indirizzo
* The indirizzo to set.
*/
public void setIndirizzo(String indirizzo) {
this.indirizzo = indirizzo;
}

/**
* @return Returns the nome.
*/
public String getNome() {
return nome;
}

/**
* @param nome
* The nome to set.
*/
public void setNome(String nome) {
this.nome = nome;
}

/**
* @return Returns the provincia.
*/
public String getProvincia() {
return provincia;
}

/**
* @param provincia
* The provincia to set.
*/
public void setProvincia(String provincia) {
this.provincia = provincia;
}

public Anagrafica creaAnagrafica() {
Anagrafica user = new Anagrafica();
user.setNome("Alessandro");
user.setCognome("Ludovici");
user.setIndirizzo("Via di Torrenova");
user.setCitta("Roma");
user.setProvincia("Lazio");
user.setTelefono(232323);
return user;
}
}
alesslud
Site Admin
 
Messaggi: 779
Iscritto il: mer nov 08, 2006 8:09 am

BaseBO.java

Messaggioda alesslud » mar gen 29, 2008 11:45 am

package com.aquilasiti.bean;

import java.io.Serializable;
import java.util.Comparator;

import org.apache.log4j.Logger;

import com.aquilasiti.bean.util.Util;

public class BaseBO implements Serializable {
protected static Logger logger = Logger.getLogger(BaseBO.class);
private Integer id;
private String descrizione;

/** Creates a new instance of BaseBO */

public BaseBO() {
}

public BaseBO(Integer id, String descrizione) {
this.id = id;
this.descrizione = descrizione;
}

public Integer getId() {
return id;
}

public String getDescrizione() {
return descrizione;
}

public void setId(Integer id) {
this.id = id;
}

public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}

public static final Comparator ORDER_BY_DESCRIZIONE_ASC = new Comparator() {
public int compare(Object o1, Object o2) {

int retval = 0;

BaseBO r1 = (BaseBO) o1;
BaseBO r2 = (BaseBO) o2;

String desc1 = r1.getDescrizione();
String desc2 = r2.getDescrizione();

if (desc1 == null)
desc1 = "";
if (desc2 == null)
desc2 = "";

retval = desc1.compareTo(desc2);

Integer key1 = r1.getId();
Integer key2 = r2.getId();

if (key1 == null)
key1 = 0;
if (key2 == null)
key2 = 0;

if (retval == 0) {
retval = key1.compareTo(key2);
}

return retval;

}
};

public static final Comparator ORDER_BY_DESCRIZIONE_DESC = new Comparator() {
public int compare(Object o1, Object o2) {

int retval = 0;

BaseBO r1 = (BaseBO) o1;
BaseBO r2 = (BaseBO) o2;

String desc1 = r1.getDescrizione();
String desc2 = r2.getDescrizione();

if (desc1 == null)
desc1 = "";
if (desc2 == null)
desc2 = "";

retval = desc2.compareTo(desc1);

return retval;

}
};

/**
* NON MODIFICARE A MENO CHE TU NON SAPPIA COSA STAI FACENDO!!!
*
* @return
* @param boObj2
*/

public boolean equals(Object boObj2) {
BaseBO bo1 = this;
BaseBO bo2 = null;
try {
bo2 = (BaseBO) boObj2;
} catch (Exception e) {
return false;
}
if (bo1.getId() != null && bo2 != null && bo2.getId() != null) {
return bo1.getId().equals(bo2.getId());
} else {
return false;
}
}

/**
* Overriding del metodo hashCode per l'utilizzo degli hashSet di filtraggio
*
* @return
*/
public int hashCode() {
if (id != null)
return id.hashCode();
else
return 0;
}

/**
* Restituisce id (se numerico) come Integer
*/
public Integer getIdAsInteger() {
Integer retval = new Integer(0);
try {
if (!Util.isEmptyString(this.getId().toString())) {
retval = new Integer(Integer.parseInt(this.getId().toString()));
}
} catch (Exception e) {

}
return retval;
}

/*
* public String toString(){ StringBuffer buf = new StringBuffer(); String
* retval = ""; Map properties = null; Collection keys; List keyList = null;
*
* try { properties = BeanUtils.describe(this); keys=properties.keySet();
* keyList = new ArrayList(keys); Collections.sort(keyList); Iterator it =
* keyList.iterator(); while(it.hasNext()){ Object k = it.next(); Object o =
* properties.get(k); buf.append("\n"+k+" = "); if(o instanceof BaseBO){
* BaseBO bo = (BaseBO)o; if(bo!=null){ buf.append("[id="+bo.getId()+"]"); }
* else{ buf.append("null"); } } else{ buf.append(o); } } } catch
* (InvocationTargetException e) { } catch (NoSuchMethodException e) { }
* catch (IllegalAccessException e) { } finally { }
*
* return buf.toString(); }
*
*
*/

public static boolean isIn(String[] container, String id) {
boolean retval = false;
if (container == null || container.length == 0 || id == null) {
return false;
}

for (int i = 0; i < container.length; i++) {
if (id.equals(container[i])) {
retval = true;
break;
}
}

return retval;

}
}
alesslud
Site Admin
 
Messaggi: 779
Iscritto il: mer nov 08, 2006 8:09 am

Domicilio.java

Messaggioda alesslud » mar gen 29, 2008 11:46 am

package com.aquilasiti.bean;

import java.util.Set;
import java.util.TreeSet;

import com.aquilasiti.bean.util.MyBOComparator;

public class Domicilio extends BaseBO {

private String via;
private String citta;
private Anagrafica anagrafica;

public Anagrafica getAnagrafica() {
return anagrafica;
}

public void setAnagrafica(Anagrafica anagrafica) {
this.anagrafica = anagrafica;
}

public Domicilio() {
// TODO Auto-generated constructor stub
}

public String getVia() {
return via;
}

public void setVia(String via) {
this.via = via;
}

public String getCitta() {
return citta;
}

public void setCitta(String citta) {
this.citta = citta;
}

public Set<Domicilio> creaDomicili() {
Set<Domicilio> listaDomicili = new TreeSet<Domicilio>(new MyBOComparator());
Domicilio retval = new Domicilio();
retval.setCitta("L'Aquila");
retval.setVia("Via delle Nocelle");
listaDomicili.add(retval);
retval = new Domicilio();
retval.setCitta("San Gregorio");
retval.setVia("Via delle bo");
listaDomicili.add(retval);
return listaDomicili;
}

public Domicilio creaDomicilio() {
Domicilio retval = new Domicilio();
retval.setCitta("L'Aquila");
retval.setVia("Via delle Nocelle");
retval.setAnagrafica(new Anagrafica());
retval.getAnagrafica().setId(1);
return retval;
}

}
Ultima modifica di alesslud il mar gen 29, 2008 1:33 pm, modificato 1 volta in totale.
alesslud
Site Admin
 
Messaggi: 779
Iscritto il: mer nov 08, 2006 8:09 am

Anagrafica.hbm.xml: va imposta su Hibernate.cfg.xml

Messaggioda alesslud » mar gen 29, 2008 11:47 am

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.aquilasiti.bean.Anagrafica" table="ANAGRAFICA"
lazy="false">
<id column="ID" name="id">
<generator class="increment" />
</id>

<!-- PROPRIETA DI BASE DEL BO -->

<property name="nome" column="nome" />
<property name="cognome" column="cognome" />
<property name="indirizzo" column="indirizzo" />
<property name="citta" column="citta" />
<property name="provincia" column="provincia" />
<property name="telefono" column="telefono" />

<set name="domicilio"
sort="com.aquilasiti.bean.util.MyBOComparator"
cascade="all,delete-orphan" lazy="false" fetch="select">

<key column="id_anagrafica" />
<one-to-many class="com.aquilasiti.bean.Domicilio" />
</set>
</class>
<sql-query name="search.anagrafica">
<return-scalar column="nome" type="string" />
select a.nome from anagrafica a, domicilio d where a.id = d.id_anagrafica
where a.nome = :nome
</sql-query>
</hibernate-mapping>
alesslud
Site Admin
 
Messaggi: 779
Iscritto il: mer nov 08, 2006 8:09 am

Domicilio.hbm.hml: va configurato in Hibernate.cfg.xml

Messaggioda alesslud » mar gen 29, 2008 11:47 am

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.aquilasiti.bean.Domicilio" table="DOMICILIO"
lazy="false">
<id column="ID" name="id">
<generator class="increment" />
</id>
<!-- nel caso di sequence Oracle: notare la proprietà del BO come stringa -->
<!--<id name="id" type="string" column="ID">
<generator class="sequence">
<param name="sequence">NOME_SEQUENCE</param>
</generator>
</id>-->

<!-- PROPRIETA DI BASE DEL BO -->
<property name="via" column="via" />
<property name="citta" column="citta" />

<many-to-one name="anagrafica"
class="com.aquilasiti.bean.Domicilio" column="id_anagrafica"
cascade="none" update="true" insert="true" not-null="true"
unique="false" />
</class>
</hibernate-mapping>
Ultima modifica di alesslud il mar gen 29, 2008 1:31 pm, modificato 1 volta in totale.
alesslud
Site Admin
 
Messaggi: 779
Iscritto il: mer nov 08, 2006 8:09 am

MyBOComparator.java

Messaggioda alesslud » mar gen 29, 2008 11:48 am

package com.aquilasiti.bean.util;

import java.io.Serializable;
import java.util.Comparator;

import com.aquilasiti.bean.BaseBO;

public class MyBOComparator implements Comparator, Serializable {
public MyBOComparator() {
}

public int compare(Object boObj1, Object boObj2) {
BaseBO bo1 = (BaseBO) boObj1;
BaseBO bo2 = (BaseBO) boObj2;
//TODO:completarei l comparator
return 0;
}

//TODO: implementare il metodo equals correttamente
public boolean equals(Object boObj1, Object boObj2) {

return boObj1.equals(boObj2);
// return bo1.getId().equals(bo2.getId());
}

}
alesslud
Site Admin
 
Messaggi: 779
Iscritto il: mer nov 08, 2006 8:09 am

Util.java

Messaggioda alesslud » mar gen 29, 2008 11:49 am

package com.aquilasiti.bean.util;

import java.text.SimpleDateFormat;

public class Util {

public Util() {
super();
}

public static boolean isEmptyString(String s) {
if (s == null || s.equals("")) {
return true;
} else {
return false;
}
}

public static String dateToString(java.util.Date d) {
if (d == null)
return "";
else {
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
return formatter.format(d);
}
}

}
alesslud
Site Admin
 
Messaggi: 779
Iscritto il: mer nov 08, 2006 8:09 am

HibernateUtil.java

Messaggioda alesslud » mar gen 29, 2008 11:49 am

package com.aquilasiti.conf;

import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory
sessionFactory = new Configuration().configure()
.buildSessionFactory();
} catch (HibernateException ex) {
throw new RuntimeException("Configuration problem: "
+ ex.getMessage(), ex);
}
}

public static final ThreadLocal session = new ThreadLocal();

public static Session currentSession() throws HibernateException {
Session s = (Session) session.get();
// Open a new Session, if this Thread has none yet
if (s == null) {
s = sessionFactory.openSession();
session.set(s);
}
return s;
}

public static void closeSession() throws HibernateException {
Session s = (Session) session.get();
session.set(null);
if (s != null)
s.close();
}
}
alesslud
Site Admin
 
Messaggi: 779
Iscritto il: mer nov 08, 2006 8:09 am

ConnectionMySql.java

Messaggioda alesslud » mar gen 29, 2008 11:50 am

package com.aquilasiti.connection;

import java.sql.DriverManager;
import java.sql.Connection;

public class ConnectionMySql {

/**
* costruttore di default.
*/
public ConnectionMySql() {
super();
}

public static Connection getConnection() {
// pagina di autenticazione
// crea la connessione

try {
Class.forName("org.gjt.mm.mysql.Driver");
} catch (ClassNotFoundException cnfe) {
System.out.println(cnfe.getMessage());

} catch (java.lang.NullPointerException cfe) {
System.out.println(cfe);

}

Connection conn = null;
try {

conn = DriverManager
.getConnection("jdbc:mysql://localhost/sql23503_1","yourusername", "yourpassword");
} catch (Exception sqle) {
System.out.println(sqle.getMessage());
sqle.printStackTrace();

}
return conn;

}

public static void main(String[] arg) {
System.out.println(getConnection());
}
}
Ultima modifica di alesslud il mar gen 29, 2008 2:15 pm, modificato 1 volta in totale.
alesslud
Site Admin
 
Messaggi: 779
Iscritto il: mer nov 08, 2006 8:09 am

MiaTest.java

Messaggioda alesslud » mar gen 29, 2008 11:50 am

package com.aquilasiti.dao;

import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

import com.aquilasiti.bean.Anagrafica;
import com.aquilasiti.bean.Domicilio;
import com.aquilasiti.conf.HibernateUtil;

/**
* @author Javadeveloper
*
* Window - Preferences - Java - Code Style - Code Templates
*/
public class MiaTest {

public static void main(String[] args) throws ClassNotFoundException,
SQLException {
try {
/*MiaTest mia = new MiaTest();
Anagrafica anagrafica = new Anagrafica();
anagrafica = anagrafica.creaAnagrafica();
Domicilio domicilio = new Domicilio();
Set<Domicilio> listaDomicili = domicilio.creaDomicili();
anagrafica.setDomicilio(listaDomicili);
mia.insertIntoAnagrafica(anagrafica);*/
// readAnagrafica();
// insert();
insertIntoDomicilio();
} catch (HibernateException e) {
e.printStackTrace();
}
}

private static void insertIntoDomicilio() {
MiaTest mia = new MiaTest();
Domicilio domicilio = new Domicilio();
domicilio = domicilio.creaDomicilio();
mia.insertIntoDomicilio(domicilio);
}

/**
* costruttore.
*/
public MiaTest() {
super();
}

public void insertIntoAnagrafica(Anagrafica user) throws HibernateException {
/*SessionFactory sessionFactory = new Configuration().configure()
.buildSessionFactory();*/
Session session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
try {
session.saveOrUpdate(user);
tx.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
}
}

public void insertIntoDomicilio(Domicilio user) throws HibernateException {
Session session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
try {
session.saveOrUpdate(user);
tx.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
HibernateUtil.closeSession();
}
}

/*
* public static void insertIntoAnagrafica() throws HibernateException {
*
* SessionFactory sessionFactory = new Configuration().configure()
* .buildSessionFactory(); Session session = sessionFactory.openSession();
*
* Anagrafica user = new Anagrafica(); user = user.creaAnagrafica();
*
* Transaction tx = session.beginTransaction(); try {
* session.saveOrUpdate(user); tx.commit(); } catch (Exception e) {
* e.printStackTrace(); } finally { session.close(); } session.close(); }
*/

public static void readAnagrafica() {
SessionFactory sessionFactory = new Configuration().configure()
.buildSessionFactory();
Session session = sessionFactory.openSession();
try {
Query query = session
.createQuery("select c from Anagrafica as c where c.nome = :nome");
query.setString("nome", "Alessandro");
for (Iterator it = query.iterate(); it.hasNext();) {
Anagrafica anag = (Anagrafica) it.next();
System.out.println("Nome: " + anag.getNome());
}
} finally {
session.close();
}
}

public static void readAnagraficaFromNome(String nome) {
SessionFactory sessionFactory = new Configuration().configure()
.buildSessionFactory();
Session session = sessionFactory.openSession();

try {
Query query = session.getNamedQuery("search.anagrafica").setString(
"nome", nome);
List l = query.list();
Iterator iterator = l.iterator();
while (iterator.hasNext()) {
Anagrafica anag = (Anagrafica) iterator.next();
System.out.println("Nome: " + anag.getNome());
}
} finally {
session.close();
}
}
}
Ultima modifica di alesslud il mar gen 29, 2008 2:13 pm, modificato 1 volta in totale.
alesslud
Site Admin
 
Messaggi: 779
Iscritto il: mer nov 08, 2006 8:09 am

TestForm.java

Messaggioda alesslud » mar gen 29, 2008 11:50 am

package com.package com.aquilasiti.form;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.util.MessageResources;

public class TestForm extends ActionForm {

private String nome;

public String getNome() {
return nome;
}

public void setNome(String nome) {
this.nome = nome;
}

public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
String azione = (String) request.getParameter("azione");
MessageResources resources = (MessageResources) request
.getAttribute(org.apache.struts.Globals.MESSAGES_KEY);
if (azione != null) {
if (azione.equals(resources
.getMessage("pulsante.azione.visualizza"))) {
ActionMessages messaggi = new ActionMessages();
messaggi.add("error", new ActionMessage(
"global.error.profonditaRicerca",
new Object[] { "Errore" }));
errors.add(messaggi);
}
}
return errors;
}
}
Ultima modifica di alesslud il mar gen 29, 2008 1:56 pm, modificato 1 volta in totale.
alesslud
Site Admin
 
Messaggi: 779
Iscritto il: mer nov 08, 2006 8:09 am

GenericService.java

Messaggioda alesslud » mar gen 29, 2008 11:51 am

package com.aquilasiti.proxy;

import com.aquilasiti.bean.Anagrafica;
import com.aquilasiti.dao.MiaTest;

public class GenericService {

public GenericService() {
super();
}

public void insertAnagrafica(Anagrafica anagrafica){
MiaTest test = new MiaTest();
test.insertIntoAnagrafica(anagrafica);

}

public void readAnagrafica(){
MiaTest.readAnagrafica();
}

}
alesslud
Site Admin
 
Messaggi: 779
Iscritto il: mer nov 08, 2006 8:09 am

ApplicationResources.properties

Messaggioda alesslud » mar gen 29, 2008 12:47 pm

test.parametro=Testa parametro
pulsante.azione.visualizza=Visualizza
global.error.profonditaRicerca=Errore
Ultima modifica di alesslud il mar gen 29, 2008 1:57 pm, modificato 1 volta in totale.
alesslud
Site Admin
 
Messaggi: 779
Iscritto il: mer nov 08, 2006 8:09 am

Prossimo

Torna a JSF e Struts

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron