Olá pessoa desenvolvi minha classe pessoa dessa maneira :
[code]import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Expression;
import br.lib.Dao;
import br.lib.HibernateUtil;
import br.lib.To;
import br.to.PessoaTo;
// Nossa classe implementado a interface Dao
public class PessoaDao implements Dao {
// Método de retorno de um Resultado Unico a partir de sei ID
public To get(To to) {
// Pegamos a Sessão atual com nossa classe utilitaria HibernateUtil
Session session = HibernateUtil.currentSession();
PessoaTo pessoaTo = (PessoaTo) session.createCriteria(PessoaTo.class)
.add(Expression.eq("idPessoa", ((PessoaTo) to).getIdPessoa()))
.uniqueResult();
HibernateUtil.closeSession();
return pessoaTo;
}
// Método de inserção de dados no Banco de Dados
public To insert(To to) {
// Pegamos a Sessão atual com nossa classe utilitaria HibernateUtil
Session session = HibernateUtil.currentSession();
// Comessamos uma transação a partir de nosso objeto session
Transaction tx = session.beginTransaction();
// Salvamos nosso objeto no banco de dados, com um método da API do
// Hibernate
session.save((PessoaTo) to);
// Damos comit nos dados. Agora sim há uma confirmação na inclusão dos
// dados
tx.commit();
// Fecho minha sessão
HibernateUtil.closeSession();
// retorno meu to
return to;
}
// Método que deleta um registro no Banco de Dados
public To delete(To to) {
// Pegamos a Sessão atual com nossa classe utilitaria HibernateUtil
Session session = HibernateUtil.currentSession();
// Comessamos uma transação a partir de nosso objeto session
Transaction tx = session.beginTransaction();
// Deletamos nosso objeto no banco de dados, com um método da API do
// Hibernate
session.delete((PessoaTo) to);
// Damos comit nos dados. Agora sim há uma confirmação na inclusão dos
// dados
tx.commit();
// Fecho minha sessão
HibernateUtil.closeSession();
// retorno meu to
return to;
}
// Método de atualização de um registro no Banco de Dados
public To update(To to) {
// Pegamos a Sessão atual com nossa classe utilitaria HibernateUtil
Session session = HibernateUtil.currentSession();
// Comessamos uma transação a partir de nosso objeto session
Transaction tx = session.beginTransaction();
// Atualizamos nosso objeto no banco de dados, com um método da API do
// Hibernate
session.update((PessoaTo) to);
// Damos comit nos dados. Agora sim há uma confirmação na inclusão dos
// dados
tx.commit();
// Fecho minha sessão
HibernateUtil.closeSession();
// retorno meu to
return to;
}
// Método para listagem dos registros no Banco de Dados
public List list() {
// Pegamos a Sessão atual com nossa classe utilitaria HibernateUtil
Session session = HibernateUtil.currentSession();
// Retorna lista dos registro do Banco de Dados
List lista = session.createCriteria(PessoaTo.class).list();
//HibernateUtil.closeSession();
return lista;
}
[/code]
só que quando uso ela com o Struts tenho o seguinte erro :
javax.servlet.ServletException: a different object with the same identifier value was already associated with the session: [br.to.PessoaTo#7]
É certo o que estou fazendo de sempre fechar a sessão após abrir com o Hibernate ?
Caso alguem tenha uma implementação mais eficaz porfavor poste.
Valeu 
Og