Você está na página 1de 6

IFMA - BARRA DO CORDA

Trabalho - Mapeamento objeto relacional em java, Principais frameworks e demostração através de


exemplos

Trabalho realizado pelo aluno

Pedro da Silva Lopes para obtenção de

nota na disciplina de Projeto integrador.

Barra do corda

2019
Mapeamento objeto relacional

Com o aumento e a popularização do Java em ambientes considerados corporativos logo se percebeu


que grande parte do tempo do desenvolvedor era gasto na codificação de queries SQL e no respectivo
código JDBC responsável por trabalhar com elas.

Além de um problema de produtividade, algumas outras preocupações aparecem: SQL que, apesar de
ter um padrão ANSI, apresenta diferenças significativas dependendo do fabricante. Não é simples trocar
um banco de dados pelo outro.

Há ainda a mudança do paradigma. A programação orientada a objetos difere muito do esquema


entidade relacional e precisamos pensar das duas maneiras para fazer um único sistema. Para
representarmos as informações no banco, utilizamos tabelas e colunas. As tabelas geralmente possuem
chave primária (PK) e podem ser relacionadas por meio da criação de chaves estrangeiras (FK) em outras
tabelas.

Quando trabalhamos com uma aplicação Java, seguimos o paradigma orientado a objetos, onde
representamos nossas informações por meio de classes e atributos. Além disso, podemos utilizar
também herança, composição para relacionar atributos, polimorfismo, enumerações, entre outros. Esse
buraco entre esses dois paradigmas gera bastante trabalho: a todo momento devemos "transformar"
objetos em registros e registros em objetos.
Java Persistence API e Frameworks ORM

Temos muitas ferramentas que facilitam o trabalho e auxiliam no desenvolvimento, ferramentas para
auxiliar nesta tarefa tornaram-se populares entre os desenvolvedores Java são conhecidas como
ferramentas de mapeamento objeto-relacional (ORM).

O Hibernate é uma ferramenta ORM open source e é a líder de mercado, sendo a inspiração para a
especificação Java Persistence API (JPA). O Hibernate nasceu sem JPA mas hoje em dia é comum acessar
o Hibernate pela especificação JPA.

Como toda especificação, ela deve possuir implementações. Entre as implementações mais comuns,
podemos citar: Hibernate da Red Hat, EclipseLink da Eclipse Foundation e o OpenJPA da Apache. Apesar
do Hibernate ter originado a JPA, o EclipseLink é a implementação referencial.

O Hibernate abstrai o seu código SQL, toda a camada JDBC e o SQL será gerado em tempo de execução.
Mais que isso, ele vai gerar o SQL que serve para um determinado banco de dados, já que cada banco
fala um "dialeto" diferente dessa linguagem. Assim há também a possibilidade de trocar de banco de
dados sem ter de alterar código Java, já que isso fica como responsabilidade da ferramenta.

Como usaremos JPA abstraímos mais ainda, podemos desenvolver sem conhecer detalhes sobre o
Hibernate e até trocar o Hibernate com uma outra implementação como OpenJPA:

Exemplo de um código em.NET usando classes nativas do .NET Framework:


strConn = "string de conexão aqui";

SqlConnection objCon = new SqlConnection(strConn);

SqlCommand objComand = objCon.CreateCommand();

objComand.CommandText = "insert into Usuario (FirstName , LastName ) values (@FirstName ,


@LastName )";

objComand.CommandType = CommandType.Text;

objComand.Parameters.Add("@FirstName ", txtFirstName.Text );

objComand.Parameters.Add("@LastName ", txtLastName.Text );

objComand.ExecuteNonQuery();

O que é um ORM?
Você que é desenvolvedor de aplicações orientadas a objetos, sabe que de alguma maneira precisa
armazenar e recuperar informações em bancos de dados relacionais. Um ORM (Object-Relational
Mapping), nada mais é do que um Framework ou um conjunto de classes que permite que você faça este
trabalho sem precisar escrever códigos de conexão com o banco, querys de SQL a todo momento,
preservando as características de orientação a objetos da linguagem face à natureza relacional dos
bancos de dados atuais.

Vantagens de se usar um ORM

- Você escreve menos código e programa com muito mais produtividade.

- Seu código fica mais elegante.

- É mais fácil de dar manutenção no projeto.

- Melhora a padronização da sua aplicação.

Exemplo de um código em .NET usando ORM:

Usuario.AddNew();

Usuario.FirstName = this.txtFirstName.Text;

Usuario.LastName = this.txtLastName.Text;

Usuario.Save();

Frameworks Java
O ecossistema Java oferece muitas estruturas ORM (com muitos níveis diferentes de qualidade). Para o
meu projeto, eu queria encontrar um ORM que me permitisse usar os recursos avançados do PostgreSQL
com a menor quantidade possível de código padrão. Meu projeto será escrito no Spring, portanto, a
integração do Spring também é um dos pontos importantes.

Para obter conhecimento sobre os recursos de cada estrutura, decidi implementar um aplicativo de
demonstração que (espero) inclua todos os ORMs disponíveis no momento. Os seguintes recursos foram
testados.

Suporte a JSON - e classificação e filtragem com base em JSON.

Tipo composto personalizado .

Tipo enumerado .

Tipo de matriz .

Procedimentos armazenados com parâmetros OUT.

Possibilidade de auditar quem e quando criou ou modificou um registro. Um número de revisão também
deve ser suportado.

Paginação e classificação dos registros selecionados pela classe Pageable do Spring Data .

Tipos de API de tempo Java 8 .

Você também pode gostar