bruno_cobra:
Valeu Lavieri, sua ajuda foi de grande valia para mim, muito obrigado mesmo.
Então você recomenda que eu utilize o EntityManager e esqueça meus Session? Confesso que não tenho muita "intimidade" com essa parte, mas até onde já li, é mais recomendado utilizar o Session...
Bom, vou dar uma pesquisada sobre isso assim que possível... valeu!
que nada... pra tudo na vida existe uma solução auhahuauh =x
acabei de verificar aqui... as EntityManager do Hibernate, implementam um outra interface tb HibernateEntityManager link
logo vc não precisa trabalhar com a EntityManger (apesar de ser bem simples), se for do seu agrado vc pode trabalhar com a Session... o que vc precisa mesmo, é criar a factory de EntityManager, e pegar as session via EntityManager...
pra não ficar só na teoria vamos ao exemplo... crei essa classe aqui
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import org.hibernate.Session;
import org.hibernate.ejb.HibernateEntityManager;
/**
*
* @author Tomaz Lavieri
*/
public class EntityUtil {
private static EntityManagerFactory entityManagerFactory;
private static EntityManager entityManager;
public static EntityManager getPublicEntityManager() {
if (entityManager == null)
entityManager = java.beans.Beans.isDesignTime() ?
null :
getEntityManagerFactory().createEntityManager();
return entityManager;
}
public static EntityManager getNewEntityManager() {
return getEntityManagerFactory().createEntityManager();
}
public static synchronized EntityManagerFactory getEntityManagerFactory() {
if (entityManagerFactory == null) {
entityManagerFactory = java.beans.Beans.isDesignTime() ?
null :
javax.persistence.Persistence
.createEntityManagerFactory("SuperLocar_Hibernate");
}
return entityManagerFactory;
}
public static Session getPublicSession() {
return ((HibernateEntityManager)getPublicEntityManager()).getSession();
}
public static Session getNewSession() {
return ((HibernateEntityManager)getNewEntityManager()).getSession();
}
}
agora fica como vc ker usar =x
public static void main(String[] args) {
Session session = EntityUtil.getNewSession();
Estado paraiba = (Estado)session.load(Estado.class, 18);
Cidade cidade = new Cidade();
cidade.setEstadoId(paraiba);
cidade.setNome("Cidade da Cidade");
session.beginTransaction();
session.persist(cidade);
session.delete(cidade);
session.getTransaction().commit();
}
Um pedaço da classe Cidade
public class Ciade implements Serializable { //....
//....
@PrePersist
public void prePersist() {
System.out.println("Pre persist na area: " + getNome());
}
}
a resposta do console...
Pre persist na area: Cidade da Cidade
espero que assim vc resolva seu problema ^^ e se tiver conseguido, da um EDIT no titulo do topico com um [RESOLVIDO] ^^
..............
Ps.: com session só funcionara com hibernate, com EntityManager, fucionara com qualquer framework de persistencia que implemente EJB