Atualização de dados no Hibernate

2 respostas
101574

Galera,

Será que tem alguma coisa errada no meu código, no meu hibernate.cfg.xml?

Porque toda vez que faço uma inclusão, alteração, exclusão. Só consigo ver essa alteração, quando reinicio o Hibernate. Isso não está certo.

O que pode ser?

Meu hibernate.cfg.xml.

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.username">
root
</property>
<property name="hibernate.connection.password">
root
</property>
<property name="hibernate.connection.url">
jdbc:mysql://localhost/compresempre?autoReconnect=true
</property>

<property name="connection.autoReconnect">true</property>
<property name="connection.autoReconnectForPools">true</property>
<property name="connection.is-connection-validation-required">true</property>
<property name="maxWait">-1</property>
<property name="maxActive">100</property>
<property name="maxIdle">30</property>
<property name="logAbandoned">true</property>
<property name="removeAbandoned">true</property>
<property name="removeAbandonedTimeout">180</property>



<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQL5InnoDBDialect
</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<mapping class="br.com.softsol.compresempre.modelo.Acesso"/>
<mapping class="br.com.softsol.compresempre.modelo.Administrador"/>
<mapping class="br.com.softsol.compresempre.modelo.Auditoria"/>
<mapping class="br.com.softsol.compresempre.modelo.Atividade"/>
<mapping class="br.com.softsol.compresempre.modelo.Bairro"/>
<mapping class="br.com.softsol.compresempre.modelo.Cidade"/>
<mapping class="br.com.softsol.compresempre.modelo.Desconto"/>
<mapping class="br.com.softsol.compresempre.modelo.Empresa"/>
<mapping class="br.com.softsol.compresempre.modelo.Estado"/>
<mapping class="br.com.softsol.compresempre.modelo.FormaPagamento"/>
<mapping class="br.com.softsol.compresempre.modelo.Frete"/>
<mapping class="br.com.softsol.compresempre.modelo.Grupo"/>
<mapping class="br.com.softsol.compresempre.modelo.Item"/>
<mapping class="br.com.softsol.compresempre.modelo.MenorPreco"/>
<mapping class="br.com.softsol.compresempre.modelo.Orcamento"/>
<mapping class="br.com.softsol.compresempre.modelo.Produto"/>
<mapping class="br.com.softsol.compresempre.modelo.ProdutoDestaque"/>
<mapping class="br.com.softsol.compresempre.modelo.ProdutoEmpresa"/>
<mapping class="br.com.softsol.compresempre.modelo.Subgrupo"/>
<mapping class="br.com.softsol.compresempre.modelo.Usuario"/>
</session-factory>
</hibernate-configuration>

2 Respostas

Hebert_Coelho
  1. Vc está fechando a transação após a inclusão/alteração?
  2. Vc está atualizando a view?
101574

Tem um pacote que gerencia para mim isso.

Olha como eu to fazendo.

Tenho o pacote Infra
Classes
CriadorDeSession
CriadorDeSessionFactory

public class CriadorDeSession implements ComponentFactory<Session>{
	
	private SessionFactory factory;
	private Session session;
	
	public CriadorDeSession(SessionFactory factory){
		this.factory = factory;
	}
	@PostConstruct
	public void abre(){
		this.session = factory.openSession();
	}
	public Session getInstance(){
			return this.session;
	}
	@PreDestroy
	public void fecha(){
		this.session.close();
	}
	}
public class CriadorDeSessionFactory implements ComponentFactory<SessionFactory>{

	private SessionFactory factory;
	
		@PostConstruct
		public void abre() {
		AnnotationConfiguration configuration = new AnnotationConfiguration();
		configuration.configure();
		this.factory = configuration.buildSessionFactory();
		}
		
		public SessionFactory getInstance(){
			return this.factory;
		}
		
		@PreDestroy
		public void fecha(){
			this.factory.close();
		}
			
	}

Na classe dao, eu instancio a sessão.

public class AcessoDAO {

	private final Session session;

	public AcessoDAO(Session session) {
		this.session = session;
	}
	
	public void salva(Acesso acesso) {
		Transaction tx = session.beginTransaction();
		session.save(acesso);
		tx.commit();
	}

Ta errado?

Criado 11 de dezembro de 2012
Ultima resposta 11 de dez. de 2012
Respostas 2
Participantes 2