Segue as minha classe genérica para a avaliação de vocês e no final
o bean, ainda não testei. Aguardo comentários.
P/s. To meio perdido =).
___________________________________________________
public interface GenericRepository<T> {
/**
* @param instance
*/
public void save(T instance);
/**
* @param isntance
*/
public void update(T instance);
/**
* @param id
* @return
*/
public T findById(Integer id);
/**
* @return
*/
public List<T> findAll();
/**
* @param example
* @return
*/
public List<T> findByConditions(String conditions);
/**
*
* @return max ID long
*/
public long getMaxId(String field);
/**
*
* @param conditions
* @return max Id long
*/
public long getMaxIdConditions(String field, String conditions);
}
___________________________________________________
public class GenericDao<T> implements
GenericRepository<T> {
private final Class typeClass;
private Session session = new
HibernateUtil().getSessionFactory().openSession();
private Transaction transaction;
public GenericDao(Class argClass) {
typeClass = argClass;
}
/**
*
* @param instance
* @see Save T
*/
@Override
public void save(T instance) {
try {
transaction = session.beginTransaction();
session.save(instance);
} catch (Exception ex) {
transaction.rollback();
System.err.println("Erro ao efetuar .save() para o
objeto da classe " + instance.getClass().getName());
ex.printStackTrace();
} finally {
transaction.commit();
session.clear();
session.close();
}
}
/**
*
* @param instance
* @see Update T
*/
@Override
public void update(T instance) {
try {
transaction = session.beginTransaction();
session.update(instance);
} catch (Exception ex) {
transaction.rollback();
System.err.println("Erro ao efetuar .update() para o
objeto da classe " + instance.getClass().getName());
ex.printStackTrace();
} finally {
transaction.commit();
session.clear();
session.close();
}
}
/**
*
* @param id
* @return T
*/
@Override
@SuppressWarnings(value = "unchecked")
public T findById(Integer id) {
try {
return (T) session.load(typeClass, id);
} catch (Exception ex) {
System.err.println("Erro ao efetuar busca por id para o
objeto da classe " + typeClass.getName());
ex.printStackTrace();
return null;
} finally {
session.clear();
session.close();
}
}
/**
*
* @return List<T>
*/
@Override
@SuppressWarnings(value = "unchecked")
public List<T> findAll() {
return session.createCriteria(typeClass).list();
}
/**
*
* @param conditions use t reference class
* @return List<T>
*/
@Override
@SuppressWarnings(value = "unchecked")
public List<T> findByConditions(String conditions) {
try {
String sql = "From " + typeClass.getName() + " as t
where " + conditions;
return session.createQuery(sql).list();
} catch (Exception ex) {
System.err.println("Erro ao efetuar buscas com condições
" + typeClass.getName());
ex.printStackTrace();
return null;
} finally {
session.clear();
session.close();
}
}
/**
*
* @param field
* @return MAX (ID)
*/
@Override
public long getMaxId(String field) {
try {
long result = (Long) this.session.createQuery(" select
max(:field)+1 from "
+ this.typeClass.getName() + " as t
").setParameter(":field", field).uniqueResult();
if (result == 0) {
result = 1;
}
return result;
} catch (Exception ex) {
System.err.println("Erro ao efetuar getMAX(ID) na classe
" + typeClass.getName());
ex.printStackTrace();
return 0;
} finally {
session.clear();
session.close();
}
}
/**
*
* @param field
* @param conditions
* @return MAX ID
*/
@Override
public long getMaxIdConditions(String field, String conditions)
{
try {
long result = (Long) this.session.createQuery(" select
max(:field)+1 from "
+ this.typeClass.getName() + " as t where
:conditions")
.setParameter(":field", field)
.setParameter(":conditions", conditions)
.uniqueResult();
if (result == 0) {
result = 1;
}
return result;
} catch (Exception ex) {
System.err.println("Erro ao efetuar getMAX(ID) +
condições na classe " + typeClass.getName());
ex.printStackTrace();
return 0;
} finally {
session.clear();
session.close();
}
}
}
___________________________________________________
public class BancoDao extends GenericDao<Banco> implements
BancoRepository {
public BancoDao(Class argClass) {
super(Banco.class);
}
}
___________________________________________________
public class BancoBean extends BancoDao {
public BancoBean(Class argClass) {
super(Banco.class);
}
}
___________________________________________________
___________________________________________________
___________________________________________________
Em 26/4/2011 10:51, Denis Rayan Luna da Silveira escreveu: