É o seguinte sou extremamente novato no JAVA, estou tentando aprender JAVA com persistence, aí através do assistente para criar um novo projeto faço uma aplicação para desktop database, faço a conexão com banco mysql, crio a tela (através do assistente) com comandos para salvar, deletar, etc. O assistente dá até um grid com os dados da tabela, pelo que eu percebi o grid (jtable) é ligado a um componente list, que por sua vez é ligado ao query que é onde através da propriedade query eu digito o comando sql, aí começam as dúvidas “SELECT t FROM Tbclientes t”, que "t"s são esses? e o componente query é ligado ao componente EntityManager. Eu criei um projeto chamado LAB, ele criou pra mim 4 arquivos dentro do packages LAB: LABAboutBox.java, LABApp.java, LABView.java e Tbclientes.java, esse ultimo possui o nome da tabela do meu banco que está vinculada a tela do LABView.java. EU QUERO ENTENDER… principalmente o Tbclientes.java, pois dentro dele fica várias queryes pré montadas com parâmetros, uma lista de parâmentros, eu queria saber utilziar esses parâmetros, tipow naquele “SELECT t FROM Tbclientes t” não posso mudar nada que dá erro, tipo colocar uma clausula where etc…, queria poder fazer uma tela por exemplo que tivesse o grid, mas que me permitisse passar parâmetro para efetuar as consultas, etc… preciso enteder um pouco a classe persistence.
Pessoal, sei que poderia fazer a conexão na mão, criando uma classe para isso, etc, poderia montar uma sql e dar um laço e jogar no jtable, mas sou daqueles que gostam de acompanhar o que é novo…coisas simples que vc demoraria para fazer uma uma conexão com banco e montar uma simples interface para salvar os dados na tabela do banco, ao ver parece ser mais simples com persistence, por isso a minha insistência em tentar aprender por aqui… aguardo ancioso alguma ajuda para dar seguimento ao estudo do java, essa noite quase desisti, minha esposa falou que eu ando falando em java dormindo, por favor não me façam perder a admiração que tenho por essa linguagem…hehehe, grato grato desde já pelas mensagens…
Pessoal tá difícil começar nesse tal de Persistência... AJUDA!
2 Respostas
Olá André,
Então: se você está começando agora com Java vai perceber que vai ter muitos conceitos que são muito importantes. Pelo que entendi você está utilizando a especificação JPA (Java Persistence API). O “Query” que você se refere no seu post é na verdade uma interface que permite a manilulação de consultas nas tabelas do banco através do JPA/Hibernate. Só que tem uma pequena diferença em relação as consultas SQL, pois esta interface usa o HQL, ou seja, mais orientado a objetos.
Exemplo: Para recuperar todos os registros de uma tabela do banco, como o MySql por exemplo, seria assim:
SELECT * FROM {TABELA};
No caso da query hql isso vai ser armazenado em um objeto:
SELECT t FROM Tbclientes t; - onde t é um objeto que receberá os dados vindos da consulta. Obs: Nesta caso será usado o método uniqueResult(), por exemplo.
Sobre o EntityManager você vai precisar mais informações sobre o JPA e também sobre EJB3.
Quanto a camada de visão, JTABLE que é um componente SWING, você pode usar independentemente do modelo de persistencia.
Se você estiver com vontade de aprender mais sobre JPA/Hibernate recomento do livro do Bauer, “Java Persistence with HIBERNATE”. É o melhor ponto de partida no assunto!
Abraço…
Então pessoal desculpas pela impolgação é talvez até pelo post confuso, vou com calma agora, mas como disse anteriormente vou tentar java com persistence não com conexão e manipulação manual… então só 2 questões para continuar: onde abro o tal HQL e outra no exemplo que eu passei foi criado automaticamente um arquivo Tbclientes.java vou transcrever um trecho…
@Entity
@Table(name = "tbclientes",schema = "")
@NamedQueries({@NamedQuery(name = "Tbclientes.findByCodigo", query = "SELECT t FROM Tbclientes t WHERE t.codigo = :codigo"), @NamedQuery(name = "Tbclientes.findByNome", query = "SELECT t FROM Tbclientes t WHERE t.nome = :nome"),
public class Tbclientes implements Serializable {
@Transient
private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
private static final long serialVersionUID = 1L;
@Id
@Column(name = "codigo", nullable = false)
private Integer codigo;
@Column(name = "nome")
private String nome;
Então e esse código continua na linha do select… são vários selects cada um com parametros correspondente ao campo e abaixo a mesma coisa @Column ("parâmetro)…etc. Eu queria entender esse código para poder utilizar em uma consulta personalizada. Grato novamente.