Dúvida transação com hibernate  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
adriano.ferranti
JavaTeenager
[Avatar]

Membro desde: 27/03/2006 10:59:38
Mensagens: 181
Offline

Pessoal, estou com uma dúvida quanto ao uso de transações com hibernate por exemplo:

Suponhamos que o campo Username seja a chave primária, então na 2 iteração do loop geraria um erro na chave primária. A transação não deveria ser abortada e nenhum registro seria inserido ?
Mas nos meus testes, mesmo caindo no bloco except com tx.rollback, o primeiro registro não é excluido. Alguem pode me dar uma força? valeu
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Seu BD suporta transações?

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
adriano.ferranti
JavaTeenager
[Avatar]

Membro desde: 27/03/2006 10:59:38
Mensagens: 181
Offline

Sim, estou usando o mysql com INNODB.
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Faça um simples teste com JDBC para garantir que as transaçõs funcionam.

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
adriano.ferranti
JavaTeenager
[Avatar]

Membro desde: 27/03/2006 10:59:38
Mensagens: 181
Offline

Obrigado por responder, Daniel. É o seguinte, o mysql por default usa o AUTOCOMMIT=true, me parece que esse é o problema, áí vem a dúvida: como faço para setar o AUTOCOMMIT=false ?
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Creio que o Hibernate deveria cuidar disso, não?

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
adriano.ferranti
JavaTeenager
[Avatar]

Membro desde: 27/03/2006 10:59:38
Mensagens: 181
Offline

Pois é... esse é meu problema, estou iniciando agora com hibernate, ainda tenho muito o que aprender, mas vendo o log do hibernate ele
seta o modo autocommit como false, logo deveria funcionar, não?
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Exato!
Para dirimir suas dúvidas, faça um teste com JDBC apenas.

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
adriano.ferranti
JavaTeenager
[Avatar]

Membro desde: 27/03/2006 10:59:38
Mensagens: 181
Offline



Esse código funciona corretamente, isso é, não insere nada no banco. Agora não sei como ficaria a transação com hibernate...
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

hehehehe...
testa assim:


gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
adriano.ferranti
JavaTeenager
[Avatar]

Membro desde: 27/03/2006 10:59:38
Mensagens: 181
Offline

danieldestro wrote:hehehehe...
testa assim:



Foi mal... dei uma viajada, mas usando conn.setAutoCommit(false) funciona, isso é, não inclui nada... Tá meio estranho isso não?
tiaguera
What is classpath?

Membro desde: 26/04/2006 11:02:48
Mensagens: 5
Offline

Olá adriano

para setar o autoCommit = false adicione o seguinte no seu
arquivo de configuração do Hibernate

<property name="hibernate.connection.autocommit">false</property>

Já tive um problema assim e resolveu com essa tag.

Abraço
[MSN]
adriano.ferranti
JavaTeenager
[Avatar]

Membro desde: 27/03/2006 10:59:38
Mensagens: 181
Offline

Puxa vida, até que enfim consegui. Estava fazendo uma burrada. No meu arquivo hibernate.properties as duas linhas a seguir estava descomentadas


hibernate.dialect org.hibernate.dialect.MySQLDialect
hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect


Então quando o hibernate criava as tabelas, estava criando no formato MyIsam (sem suporte a transação). Mas o estranho é que quando eu testei com JDBC a transação funcionou mesmo assim...

Muito obrigado a todos que me ajudaram.
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team