Escolar Documentos
Profissional Documentos
Cultura Documentos
MzI0 PDF
MzI0 PDF
RESUMO
Este artigo apresenta o desenvolvimento de um exemplo de sistema para manutenção de
dados de departamentos. Apresentam-se aqui as técnicas e as ferramentas empregadas nesse
desenvolvimento, bem como os resultados obtidos durante a realização do mesmo. Esse
sistema foi desenvolvido empregando-se o paradigma da Orientação a Objetos, o Java, a IDE
NetBeans 6.5, o framework Hibernate e o SGBD MySQL.
ABSTRACT
This article presents the development of an example system for maintenance of data from
departments. The techniques and the tools used in this development are presented here, as
well as the results gotten during his accomplishment. This system was developed using the
Object-Oriented paradigm, the Java, the NetBeans 6.5 IDE, the Hibernate framework and the
MySQL DBMS .
A abordagem MVC - Modelo, Visão e Controle (Model, View and Controller) define
como os componentes da aplicação irão interagir entre si. Este padrão de arquitetura divide os
objetos em três conjuntos:
Além disso, para a manipulação dos dados do sistema foram empregados objetos de
acesso, conhecidos como DAO (Data Access Object), que permitem que as regras de negócio
sejam separadas das regras para acesso aos dados, de forma que sejam criadas classes
exclusivas para o acesso ao SGBD (XAVIER, 2007).
2. PREPARANDO O AMBIENTE
2
empregado o SGBD MySQL. Para esse tutorial foi criado um banco de dados chamado
exemplohibernate, com o usuário root e a senha vazia.
Para este aplicativo será necessária a utilização das bibliotecas do Hibernate JPA e do
driver JDBC que fará o acesso ao banco. Logo, será necessária a construção de Librarys no
NetBeans para o armazenamento e organização destes arquivos. Para isso, deve-se criar uma
Library para o driver JDBC do MySQL.
No pacote model crie a classe Departamento, com um construtor padrão (vazio) e com
os seguintes atributos encapsulados:
id (Integer)
nome (String)
area (String)
Sendo assim, nosso próximo passo consiste em construir a classe FactoryClass para
gerência do Banco de Dados a ser utilizado. Para isso, crie uma nova classe no pacote DAO e
dê o nome para ela de FactoryClass. Em seguida, digite o código mostrado a seguir.
public static void criarDAOFactory() {
HibernateConfiguracao configuracao = new HibernateConfiguracao();
configuracao.criaSessionFactory();
}
Nesse ponto, algumas linhas do seu código irão ficar marcadas de vermelho. No
mesmo pacote, crie a classe HibernateConfiguracao, com o seguinte código.
public class HibernateConfiguracao {
private static SessionFactory sessionFactory;
public HibernateConfiguracao() {
}
public Session openSession() {
return sessionFactory.openSession();
}
5. CRIANDO O DAO
A classe DAO irá permitir o acesso do sistema ao SGBD configurado. Para tanto,
iremos utilizar um DAO Genérico que possui os métodos básicos de acesso a um banco de
dados.
Incluir;
Alterar;
Excluir;
Consultar;
Listar.
Para a execução dessas operações básicas, pode-se empregar alguns métodos
genéricos, como os listados abaixo. Para tanto, crie uma classe chamada DAOGenerico (no
pacote DAO), com o código exibido a seguir.(KING, 2007)
public class DAOGenerico {
protected HibernateConfiguracao hibernateConfiguracao;
public DAOGenerico() {
hibernateConfiguracao = new HibernateConfiguracao();
}
public void gravar(Object obj) throws HibernateException {
Session session = hibernateConfiguracao.openSession();
Transaction transaction = session.beginTransaction();
session.save(obj);
transaction.commit();
session.close();
}
public void alterar(Object obj) throws HibernateException {
Session session = hibernateConfiguracao.openSession();
Transaction transaction = session.beginTransaction();
session.update(obj);
transaction.commit();
session.close();
}
public void excluir(Object obj) throws HibernateException {
Session session = hibernateConfiguracao.openSession();
Transaction transaction = session.beginTransaction();
session.delete(obj);
transaction.commit();
session.close();
}
public List carregarTudoOrdenado(Class clas, String ordem) throws
HibernateException {
Session session = hibernateConfiguracao.openSession();
Criteria criteria = session.createCriteria(clas);
criteria.addOrder(Order.asc(ordem));
List lista = criteria.list();
session.close();
6
return lista;
}
public CtrManterDepartamento( ){
}
public int gravarDepartamento(Departamento departamento) {
try {
acessohibernatedepto.gravar(departamento);
return 1;
} catch (HibernateException e) {
e.printStackTrace();
return 2;
}
}
Num primeiro momento, iremos criar um formulário que permita somente a inclusão
dos departamentos. Para isso, no pacote view, crie um novo JFrame, chamado
7
FrmManterDepartamento. (GONÇALVES,2006)
No pacote padrão, crie mais um JFrame, chamado Principal, inclua nele um Jbutton
(chamado jBtnExibirDepartamento), torne essa classe a inicial do sistema e faça as seguintes
alterações na classe:
//construtor
public Principal() {
FactoryClass.criarDAOFactory();
initComponents();
}
//método main
public static void main(String args[]) {
Principal telaPrincipal = new Principal();
telaPrincipal.setVisible(true);
8
telaPrincipal.setExtendedState(MAXIMIZED_BOTH);
}
9. LISTANDO OS OBJETOS
Figura 05. Tela para manutenção de dados alterada para permitir a listagem dos objetos.
9
A seguir, inclua um novo evento no JFrame (Window – windowActiveted), insira o
código no evento criado e importe as classes necessárias.
DefaultListModel listModel = new DefaultListModel();
List listDepartamento = new ArrayList();
listDepartamento = ctrManterDepartamento.carregarDepartamentos();
if (listDepartamento != null) {
Iterator i = listDepartamento.iterator();
while (i.hasNext()) {
Departamento deptList = (Departamento) i.next();
listModel.addElement(deptList);
}
jLstDepartamentos.setModel(listModel);
} else {
JOptionPane.showMessageDialog(this, "Não foi possível recuperar
todos os departamentos");
}
O sistema ainda irá indicar que falta um método no controlador. Para corrigir este
problema, inclua o código abaixo no controlador e faça as importações necessárias.
public List carregarDepartamentos() {
try {
return acessohibernatedepto.CarregarTudoOrdenado
(Departamento.class, "nome");
} catch (HibernateException e) {
return null;
}
}
Finalmente, insira o método abaixo na classe Departamento do pacote model.
public String toString() {
return this.getNome();
}
Observe que a lista foi preenchida com objetos da classe departamento. Logo, a
consulta aos dados de um objeto ficou muito mais simples.
Para exibir os dados de um objeto selecionado na lista, crie um novo evento para a
lista (Mouse – mouseClicked) e acrescente o código a seguir ao evento:
depart = (Departamento) jLstDepartamentos.getSelectedValue();
if (depart != null) {
jTxtNome.setText(depart.getNome());
jTxtArea.setText(depart.getArea());
} else {
JOptionPane.showMessageDialog(this, "Objeto não Encontrado!");
}
Nesse momento, a execução do programa deverá permitir a inclusão dos objetos da
classe departamento, e também a listagem e consulta dos mesmos.
10
10. EXCLUINDO OS OBJETOS
Após isso, crie um evento para o novo botão (Events – Action – actionPerformed) e
insira o código abaixo.
depart = (Departamento) jLstDepartamentos.getSelectedValue();
if (depart != null) {
if (ctrManterDepartamento.excluirDepartamento(depart)) {
JOptionPane.showMessageDialog(this, "Objeto Excluído");
} else {
JOptionPane.showMessageDialog(this, "Objeto não excluído");
}
} else {
JOptionPane.showMessageDialog(this, "Selecione o Objeto");
}
Novamente o sistema irá indicar que falta um método no controlador. Logo, insira o
código abaixo no controlador.
public boolean excluirDepartamento(Departamento departamento) {
try {
acessohibernatedepto.excluir(departamento);
return true;
} catch (HibernateException e) {
e.printStackTrace();
return false;
}
}
Modifique sua propriedade texto para “Alterar”, a sua propriedade Name para
jBtnAlterar e crie um novo evento (Events – Action – actionPerformed) para o novo botão.
11
Figura 06. Tela para manutenção de dados permitindo a listagem, inclusão, alteração e exclusão
de objetos.
if (ctrManterDepartamento.alterarDepartamento(depart)) {
JOptionPane.showMessageDialog(this, "Objeto persistido");
} else {
JOptionPane.showMessageDialog(this, "Objeto não persistido");
}
} else {
JOptionPane.showMessageDialog(this, "Objeto não localizado");
}
Após isso, altere o controlador inserindo o código abaixo.
public boolean alterarDepartamento(Departamento departamento) {
try {
acessohibernatedepto.alterar(departamento);
return true;
} catch (HibernateException e) {
e.printStackTrace();
return false;
}
12
}
Finalmente, execute o programa e observe os resultados. Se desejar, limpe os campos
da tela após a alteração e a exclusão do objeto.
13
13. REFERÊNCIAS BIBLIOGRÁFICAS
DEITEL, H. M.. Java Como Programar. 6a ed. São Paulo: Prentice Hall, 2007.
KING G. Java Persistence com Hibernate. Rio de Janeiro: Ciência Moderna, 2007.
XAVIER, K.; SENGER, Y. Abstract Factory Aplicado. Rio de Janeiro, Java Magazine,
edição 50, p. 40-45, 2007.
14