NetBeans 6.0 – Swing Application Framework – Parte II
Crie aplicações desktop Java em poucos minutos usando o novo Swing Aplication Framework com o Netbeans 6.0
Você não gostou da qualidade deste conteúdo?
(opcional) Você gostaria de comentar o que não lhe agradou?
Crie aplicações desktop Java em poucos minutos usando o novo Swing Aplication Framework com o Netbeans 6.0
Antonio Peixoto da Cunha Junior e Marcos Alberto Lopes da Silva
Por trás dos bastidores
O Netbeans 6.0 utiliza JPA (Java Persistence API) que é a especificação padrão para o gerenciamento de persistência e mapeamento objeto relacional, que vem para e simplificar o desenvolvimento de aplicações que utilizam persistência de dados. Um dos principais conceitos relacionados à API JPA é o de entidade. É bom lembrar que, uma entidade corresponde a um objeto que pode ser gravado na base de dados a partir de um mecanismo de persistência. O Netbeans 6.0 gera um arquivo “Persistence.xml”, responsável por fazer a conexão com o banco, criando assim uma camada de abstração entre o JDBC e o código. O uso dessa solução é bastante recomendada devido a sua estabilidade, boa documentação e facilidade de uso.
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="samplePU" transaction-type="RESOURCE_LOCAL">
<provider>oracle.toplink.essentials.PersistenceProvider</provider>
<class>ppessoa.Pessoa</class>
<properties>
<property name="toplink.jdbc.url" value="jdbc:derby://localhost:1527/sample"/>
<property name="toplink.jdbc.user" value="app"/>
<property name="toplink.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
<property name="toplink.jdbc.password" value="app"/>
</properties>
</persistence-unit>
</persistence>
Listagem 2. Arquivo XML gerado no Netbeans 6.0
Nesta aplicação o framework gera uma classe persistente “Pessoa.java”. Tal persistência permite que um objeto continue a existir mesmo após a destruição do processo que o criou. Na verdade, o que continua a existir é seu estado, já que pode ser armazenado em disco. Além disso, são geradas várias Queries de consultas.
@Entity
@Table(name = "PESSOA")
@NamedQueries( {@NamedQuery(name = "Pessoa.findByCodigo", query = "SELECT p FROM Pessoa p WHERE p.codigo = :codigo"),
@NamedQuery(name = "Pessoa.findByNome", query = "SELECT p FROM Pessoa p WHERE p.nome = :nome"),
@NamedQuery(name = "Pessoa.findByDataNascimento", query = "SELECT p FROM Pessoa p WHERE p.dataNascimento = :dataNascimento"),
@NamedQuery(name = "Pessoa.findBySexo", query = "SELECT p FROM Pessoa p WHERE p.sexo = :sexo")})
public class Pessoa implements Serializable {
@Transient
private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
@Id
@Column(name = "CODIGO", nullable = false)
private Integer codigo;
@Column(name = "NOME")
private String nome;
@Column(name = "DATA_NASCIMENTO")
@Temporal(TemporalType.DATE)
private Date dataNascimento;
@Column(name = "SEXO")
private String sexo;
public Pessoa() {
}
public Pessoa(Integer codigo) {
this.codigo = codigo;
}
public Integer getCodigo() {
return codigo;
}
public void setCodigo(Integer codigo) {
Integer oldCodigo = this.codigo;
this.codigo = codigo;
changeSupport.firePropertyChange("codigo", oldCodigo, codigo);
}
Listagem 3. Fragmento da classe “Pessoa.java”
Uma vez gerada a classe persistente, existe a necessidade de que a aplicação interaja com uma camada de persistência. Isso é feito invocando o gerenciador de persistência, também conhecido como gerenciador de entidades (da classe EntityManager), responsável por quase todas as operações de persistência de objetos. A classe PPessoaFrame gerada pelo próprio NetBeans é responsável por gerenciar o ciclo de vida das entidades do formulário.
Assim, o objeto gerenciador de entidades (entityManager) é obtido nesse método invocando o método createEntityManagerFactory da classe Persistence passando como argumento o nome da unidade de persistência (declarado no arquivo Persistence.xml). O código da obtenção do objeto entityManager pode ser visto na Listagem 4.
private void initComponents() {
bindingContext = new javax.beans.binding.BindingContext();
taskMonitor = new application.TaskMonitor();
entityManager = Persistence.createEntityManagerFactory("samplePU").createEntityManager();
// código retirado para motivos de clareza do artigo
}
Listagem 4. Fragmento do método initComponents da classe PPessoaFrame
Toda operação de manutenção do objeto no banco de dados (salvar, recuperar, atualizar e apagar) passa a ser executada e gerenciada pelo objeto gerenciador de persistência (entityManager). O código que demonstra a operação de persistir um novo objeto no banco (salvar) pode ser visto na Listagem 5.
@Action public void newRecord() {
ppessoa.Pessoa p = new ppessoa.Pessoa();
entityManager.persist(p);
list.add(p);
int row = list.size()-1;
masterTable.setRowSelectionInterval(row, row);
masterTable.scrollRectToVisible(masterTable.getCellRect(row, 0, true));
}
Eduardo Oliveira Spinola
Eduardo Oliveira Spínola (eduspinola@gmail.com - http://eduspinola.googlepages.com/home) é Bacharel em Ciência da Computação pela Universidade Salvador - UNIFACS, em 2005. Atualmente fazendo o Mestrado em Engenharia de Software pela Universidade Salvador - Unifacs. Tendo como experiência: desenvolvi...



