1º - Entrei na minha aplicação, rodei o Hibernate e então fui navegando nos registros…
2º - Entrei no console e mudei um determinado registro através de linha do comando. (ou seja, nao rodei pelo hibernate)
3º - Quando fui navegando e passei por ele, o Hibernate ainda estava com o registro antigo.
Gostaria de saber como faz para sincronizar isso, para que ocorra nao esse problema.
O ideal é você fazer o controle transacional num serviço, não no DAO. Até pq uma transação pode envolver o uso de diferentes DAOs. Pra facilitar isto, procure por Spring ou JTA.
O ideal é você fazer o controle transacional num serviço, não no DAO. Até pq uma transação pode envolver o uso de diferentes DAOs. Pra facilitar isto, procure por Spring ou JTA.[/quote]
Estou programando em Desktop amigo…
Sobre o que você falou, então o melhor é trabalhar da maneira que tinha feito antes? Dando o commit na transação?
Deixa eu te perguntar outra coisa… Isso que fiz funcionou somente para os botoes ‘Primeiro registro’ e ‘Ultimo registro’ visto que quando vou nele, puxo toda a lista de informações para um List e dai vou percorrendo a lista… Caso eu atualizar um registro no db na unha, ele não estará nessa minha List…
Como vocês geralmente fazem para esses botões ‘Primeiro Registro’, ‘Próximo registro’, ‘Voltar registro’, ‘Último Registro’… ?
Dá pra usar Spring em aplicações Desktop e é simples. Mas o ponto aqui é fazer o controle transacional, com ou sem Spring.
[quote=Gleidson Henrique]
Sobre o que você falou, então o melhor é trabalhar da maneira que tinha feito antes? Dando o commit na transação?[/quote]
Sem algum framework que faça isto para você, tem que fazer isto na mão mesmo, dar commit, rollback, etc. No modo auto-commit, cada declaração SQL que você faz é automaticamente “comitada”. Mas como eu disse, o próprio Hibernate não aconselha isto. Neste link está melhor explicado:
[quote=Gleidson Henrique]
Deixa eu te perguntar outra coisa… Isso que fiz funcionou somente para os botoes ‘Primeiro registro’ e ‘Ultimo registro’ visto que quando vou nele, puxo toda a lista de informações para um List e dai vou percorrendo a lista… Caso eu atualizar um registro no db na unha, ele não estará nessa minha List…
Como vocês geralmente fazem para esses botões ‘Primeiro Registro’, ‘Próximo registro’, ‘Voltar registro’, ‘Último Registro’… ?
Abraços[/quote]
Mas você está executando a consulta novamente? Se você faz uma busca, carrega os dados em memória, altera os dados no banco, o Hibernate não vai automaticamente enxergar isto. É preciso repetir a consulta.
Estava pensando, guardar uma lista de informações ocupa muita memoria, estou pensando em fazer um esquema para guardar uma lista apenas com os IDs e a cada vez que for clicado para ir ao proximo registro, ele vai ao db e puxa as informações somente daquele registro…
Obrigado pela ajuda amigo… Qualquer coisa, volto a gritar aqui… rsrs
[quote=Gleidson Henrique][quote=wagnerfrancisco]
Mas você está executando a consulta novamente? Se você faz uma busca, carrega os dados em memória, altera os dados no banco, o Hibernate não vai automaticamente enxergar isto. É preciso repetir a consulta.
[/quote]
Estava pensando, guardar uma lista de informações ocupa muita memoria, estou pensando em fazer um esquema para guardar uma lista apenas com os IDs e a cada vez que for clicado para ir ao proximo registro, ele vai ao db e puxa as informações somente daquele registro…
Obrigado pela ajuda amigo… Qualquer coisa, volto a gritar aqui… rsrs
Abraços
[/quote]
Não sei exatamente qual o cenário que você tem, mas não vejo muito sentido nesta sua abordagem. Você não vai utilizar os objetos que traz do banco? Depois de utilizar, você descarta. A princípio não vejo pq armazenar os ids. Numa aplicação desktop, por exemplo, você possivelmente vai exibir uma coleção de dados em um combo ou uma tabela. Quando você não precisar mais mostrar, simplesmente descarte-os (o que acontecerá automaticamente se você não manter referência para os objetos).
Se a sua preocupação é paginação, você deve limitar a sua consulta. Cada consulta você delimita a partir de qual id deve buscar e a quantidade a ser recebida. No hibernate, pode utilizar os métodos setFirstResult e setMaxResults. Assim você só traz do banco o que vai exibir.
[quote=wagnerfrancisco][quote=Gleidson Henrique][quote=wagnerfrancisco]
Mas você está executando a consulta novamente? Se você faz uma busca, carrega os dados em memória, altera os dados no banco, o Hibernate não vai automaticamente enxergar isto. É preciso repetir a consulta.
[/quote]
Estava pensando, guardar uma lista de informações ocupa muita memoria, estou pensando em fazer um esquema para guardar uma lista apenas com os IDs e a cada vez que for clicado para ir ao proximo registro, ele vai ao db e puxa as informações somente daquele registro…
Obrigado pela ajuda amigo… Qualquer coisa, volto a gritar aqui… rsrs
Abraços
[/quote]
Não sei exatamente qual o cenário que você tem, mas não vejo muito sentido nesta sua abordagem. Você não vai utilizar os objetos que traz do banco? Depois de utilizar, você descarta. A princípio não vejo pq armazenar os ids. Numa aplicação desktop, por exemplo, você possivelmente vai exibir uma coleção de dados em um combo ou uma tabela. Quando você não precisar mais mostrar, simplesmente descarte-os (o que acontecerá automaticamente se você não manter referência para os objetos).
Se a sua preocupação é paginação, você deve limitar a sua consulta. Cada consulta você delimita a partir de qual id deve buscar e a quantidade a ser recebida. No hibernate, pode utilizar os métodos setFirstResult e setMaxResults. Assim você só traz do banco o que vai exibir.
Falou.[/quote]
Então, sobre as JTable é realmente isso… possuo alguns campos que pesquiso, porém o problema era a paginação mesmo.
Não conheço esses dois métodos, mas acredito que seja justamente isso que eu preciso.
Muito obrigado amigo. Vou deixar o tópico ainda como aberto e volto aqui depois para falar os resultados…