Não sei se eu vou conseguir explicar o que estou tentando mas vamos lá:
De um tempo pra cá venho tentado utilizar Hibernate para persistir dados em aplicações desktop mas todas as vezes isso me gerou mais trabalho e menos benefícios.
O banco de dados é relacional e a interface tb (pra cada formulário uma tabela principal, que mostra um registro da tabela de cada vez). Então eu crio componentes com mesmo “nome” dos campos no banco de dados e não preciso escrever os “campo.setText(meuResultSet.getString(0))” pra todos os campos do formulário. Por exemplo: uma agenda com nome e telefone.
2 campos no banco = 2 JTextField na tela (guardados em um hashmap cada um com sua chave igual ao nome do respectivo campo no banco);
Aí é só iterar sobre as campos ou os textFields e ir preenchendo usando um loop;
Isso economiza muito tempo.
Se eu usar hibernate e meter um modelo orientado a objetos na história, como eu faço pra mostrar os dados na tela sem precisar ficar escrevendo os setText’s de todos os fields? Da mesma forma que o hibernate usa mapeamento entre os dados na memória e o banco, alguem conhece um mapeamento entre os dados na memória e a interface?
na verdade não é bem isso. Usando a agenda do exemplo que eu dei, imagine que vc queira adicionar um campo de email. Pra isso seria preciso alterar a classe “Form” além de add o campo no JPanel e o campo no banco. Queria eliminar esse intermediário entre o banco e os componentes.
Eu trabalho com aplicações desktop + hibernate na boa.
Eu faço o seguinte: guardo a consulta ou filtro do usuário em um atributo do tipo ArrayList que conterá os objetos que representam os registros do banco de dados. Este atributo está na classe Form, que é uma classe genérica em que todos os meus formulários de tela são herdados. Depois disso eu populo os dados na tela usando reflection.
Isto funciona conforme a navegação do usuário, por exemplo, se ele clica no botão “Próximo” para visualizar o próximo registro eu leio a posição seguinte do meu ArrayList para recuperar o objeto e populo os seus dados nos TextFields da tela utilizando reflection. Isto já está tudo programado nesta classe Form.
Espero ter ajudado… qualquer dúvida é só perguntar!