Desenvolvendo um Aplicativo Desktop Completo – Parte 02

Volto com mais uma parte do Artigo que irá desenvolver um aplicativo Desktop, isto é, que funciona como se instalado. Ele terá um Banco de Dados embutido onde salvaremos os Livros. Hoje, vou mostrar como configurar o sistema de persistência, e bem como tornar nossa Classe Livro numa Entidade do BD.

Como vamos usar um Framework de persistência, uma parte de nosso trabalho se torna mais fácil. Sem o Hibernate, teríamos que escrever uma Classe de conexão com o BD, sem contar que as Classes que fazem as operações de persistência (o famoso CRUD) seriam extremamente grandes e complicadas. Vamos então aproveitá-lo, começando pela configuração. Precisaremos de um arquivo chamado persistence.xml, que residirá no diretório META-INF, que, por sua vez, ficará no mesmo nível do diretório src (NOSSA). Vamos por partes:

Clique com o botão direito sobre nosso projeto (Biblioteca) e escolha New -> Folder. Dê o nome de META-INF. Agora, clique com o botão direito sobre nossa nova pasta e escolha New -> File. Dê o nome persistence.xml. Pronto … agora vamos escrever o arquivo. Vou explicar, após a listagem, as partes mais importantes:


<?xml version="1.0" encoding="UTF-8"?>
<persistence 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"
version="1.0">
<persistence-unit name="biblio" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.connection.url" value="jdbc:hsqldb:file:./db/biblio;hsqldb.default_table_type=cached" />
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver" />

<property name="hibernate.connection.username" value="sa"/>
<property name="hibernate.connection.password" value=""/>

<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>

</persistence>

Vamos às explicações:

Precisamos mostrar que esse arquivo é o persistence.xml requerido pelo Hibernate, e fazemos isso com a tag <persistence>. As opções contidas nessa tag são para facilitar sua escrita, pois permite ao Eclipse usar o recurso de auto-completar (é só começar a digitar e pressionar Ctrl+Espaço). Depois devemos definir uma unidade de persistência, que será usada por nosso aplicativo para salvar as informações. Aplicativos muito complexos podem usar mais de uma unidade de persistência. Criamos a unidade de persistência com a tag <persistence-unit>, que possui dois atributos muito importantes: name e transaction-type.

O atributo name nomeia (dãh!) a unidade de persistência. Assim, o Aplicativo sabe qual unidade usar. Mesmo que só exista uma unidade, ela deve ser nomeada, pois quando iniciamos o Aplicativo é criada a árvore JNDI, que contém todos os recursos disponíveis (JNDI é muito avançado e, se puder, evite :)). O atributo transaction-type indica como será a transação com o BD: Se for gerenciada por conteiner (JEE container), o valor deve ser JTA. Caso seja gerenciada pelo Aplicativo, o valor deve ser RESOURCE_LOCAL. O padrão, se nada for especificado, é JTA.

Com <provider> dizemos quem irá fornecer o mapeamento OR (Objeto-Relacional). Aqui usamos o Hibernate, mas existem outros (confira a lista). Para finalizar, temos as propriedades do provedor do mapeamento OR. Começamos com <properties> para indicar onde estão as propriedades, e depois listamos as que queremos configurar, com seu respectivo valor.

A primeira propriedade e hibernate.connection.url, que indica como conectar com o BD. Há uma URL para cada BD. Em nosso caso, nossa URL é:

jdbc:hsqldb:file:./db/biblio;hsqldb.default_table_type=cached

Isso informa que vamos nos conectar a um BD HSQLDB que está no diretório /db/biblio, a partir do diretório src, através de um driver JDBC . O que segue após o ; indica que é para se criar um banco de dados em disco, pois o padrão do HSQLDB é criar o BD na memória, perdendo os dados ao finalizar a Aplicação. O BD em memória é usado para testar a interação do aplicativo com o BD, como se fosse real.

Depois informamos qual o Driver do HSQLDB, que é a forma que o Hibernate usa para se conectar com nosso BD. Isso torna fácil trocar de BD, alterando a URL e o Driver (e o username e password, se existirem). Informamos agora o usuário e a senha para conectar ao BD, que no HSQLDB é user= “sa” e pass= “” por padrão.

Informamos então o dialeto usado pelo BD. Cada BD tem, ao menos, um dialeto. Clique aqui para ver alguns dos dialetos mais comuns. As duas propriedades seguintes servem para exibir o código SQL que é usado por baixo dos panos pelo Hibernate, e de uma forma inteligível. A última propriedade indica ao Hibernate para, na primeira utilização, criar o BD a partir da Entidade(Livro no nosso caso) e que qualquer alteração na Entidade deve ser perpetuada para o BD.

Existem outras propriedades e configurações, mas para nosso Aplicativo isso basta. Como me extendi muito, vou deixar o Mapeamento OR para o próximo post, com as devidas explicações. Até a próxima!

Esse post foi publicado em Java, Programação, Software, Tecnologia e marcado , , , , , . Guardar link permanente.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s