Hibernate + HSQLDB rodando em modo standalone, é possível?
16 respostas
Rubem_Azenha
Olá…
Estou utilizando HSQLDB em uma aplicação desktop e gostaria muito de usar Hibernate. É possível fazer isso?
Vou usar o HSQLDB em modo standalone, a principio. Ou teria uma opção mais adequada?
bem, eu fiz um programa exemplo, e as informações não eram persistidas, e não raro ocorria problemas de locking dos arquivos do HSQLDB.
publicvoidtestHibernateSettings()throwsException{SessionFactoryfactory=newConfiguration().configure().buildSessionFactory();Sessionsession=factory.openSession();Contactcontact=newContact(null,"rubem","[email removido]","3255-3694","Rua Presidente Bernardes, 762","asdasd");Transactiontransaction=session.beginTransaction();session.save(contact);transaction.commit();System.out.println(session.createCriteria(Contact.class).list());session.close();factory.close();}
Se eh so pra testes, pq vc nao poe o HSQLDB em memoria?
E… pq esse teste nao tem nenhuma assertion? :?
F
fabio.patricio
O problema do lock tu nao deve ta dando shutdown no banco o que é necessario no HSQLDB.
]['s
Rubem_Azenha
CV: esse teste eh para ver se funciona Hibernate+HSQL Standalone. Se nao der nenhuma exception, o teste passou
Fabio: valeu a dica… vou testar
fredferrao
Não estou entendendo muito a duvida??? O Hibernate não foi feito especificamente para Web e muito menos para bancos distribuidos!! Ele simplesmente faz a ponte entre sua aplicacao e o BD, esteja o BD na mesma maquina da aplicação ou não!!!
Só se o problema for com o HSQLDB!!!
T
thingol
Se você quer ter N conexões simultâneas ao HSQLDB, pode tentar o modo “server”.
Recomendo usar a versão 1.8 ou posterior; a 1.7 está terrivelmente bugada, tanto é que o pessoal do OpenOffice teve de tirar um verdadeiro caminhão de bugs do HSQLDB.
Rubem_Azenha
Thingol, a apliacao eh desktop, nao vai ter problemas com concorrencia.
O que eu quero saber eh se tem alguma limitacao para utilizar hibernate + HSQLDB Standalone.
Leozin
aqui também não teve jeito, tá me dando raiva já! grrr
Testei de tudo quanto é jeito, essa merda NÃO GRAVA de jeito nenhum, já botei shutdown no xml do hibernate (connection.shutdown=true), já botei na string de conexão (STRINGCONEXÃO;shutdown=true) e não teve jeito, commit não tá dando certo
Agora é assim, por exemplo, utilizando um jcreator ou eclipse sem hibernate utilizando standalone, pra gravar, você precisa executar o comando “shutdown” OU se tiver na string de conexão o “shutdown=true” você precisa dar close na conexão pra funcionar
tá foda mesmo
grprado
Também tive esse problema com o hibernate + HSQLDB, mas ao colocar a string shutdown=true tudo funciona “bem”.
Já ligou o log4j do hibernate pra ver se dá algum problema? Ele não estaria por dropando as tables (hbm2ddl.auto = create)?
Em ultimo caso ja tentou usar o Derby como db standalone?
Leozin
ainda por cima peguei o source da javamagazine 28, by the way, essa parada de auto create eu não entendi muito bem… Não é uma parada de schema?
e acho que vou ter que apelar pro derby =[
bom, vou tentar por essa parada do schema pra ver se muda alguma coisa
Leozin
com schema não deu certo =[
quando uso create, os dados que já estão no banco de dados não aparecem, ou seja, num mesmo programa eu crio o objeto, salvo e depois dou um select, daí ele aparece. Quando eu tento abrir somente para ler os dados, ele não acha NADA
mas que azar hein
grprado
Nao não não, você entendeu errado minha pergunta.
Com create o Hibernate faz drop de todas as tables na inicialização.
Perguntei se você estava usando create pois isso poderia causar o problema que você está enfrentando (quando o programa está rodando o commit funciona e os dados são “persistidos”, quando você fecha e roda novamente os dados foram perdidos).
Leozin
hm eu não sabia disso hehe
mas dah nada, eu já migrei pra derby, achei bem mais legal e funciona o standalone tranquilo
comigo funciona desse jeito (linha com a string de conexão):
jdbc:hsqldb:data/basedados;shutdown=true
acho que de resto está ok, testa aí e nos avisa…
A
Alexandre_Ferreira1
Sei que o topico é antigo.
Porem estava no Google procurando sobre:
por que não é preciso usar Dialect no HSQL?
por que não o tipo de transaction precisa ser o RESOURCE_LOCAL?
E vi parar aqui. Fiz muitos testes aqui e nenhum momento meus dados deixaram de ser salvos.
Qual versão vocês estao usando?
Pergunto isso, porque uso a ultima versao ( 1.8.0.8 )
E nao preciso colocar ;shutdown=true e nem SET WRITE_DELAY 0 MILLIS (*.script) para a persistencia dos dados serem concluidas com sucesso.
Estou usando o Hibernate como implementação do JPA.