benchmark de framework mapeamento objeto

Propaganda
BENCHMARK DE FRAMEWORK MAPEAMENTO OBJETO-RELACIONAL (ORM)
– UMA ANÁLISE UTILIZANDO JAVA PERSISTENCE API (JPA)
FRAMEWORK’S BENCHMARK OBJECT-RELATIONAL MAPPING (ORM) - AN
ANALYSIS USING JAVA PERSISTENCE API (JPA)
Bárbara Ayako Nass
Leonardo Henrique Marcon de Biagi
Prof. Me Anderson Pazin – [email protected]
RESUMO
O armazenamento e gerenciamento de dados são atividades fundamentais
para os sistemas de informação. Esses sistemas são apoiados, em sua grande
maioria, por gerenciadores de banco de dados relacionais. Cada vez mais, tais
sistemas são desenvolvidos utilizando-se dos conceitos e as linguagens orientadas
a objetos. Nesse contexto há uma grande diferença semântica de funcionamento
entre os conceitos de orientação a objetos, destinado ao desenvolvimento dos
sistemas, e os conceitos de bases de dados relacionais, onde as aplicações
desenvolvidas persistem os seus dados. Uma possível solução seria utilizar
frameworks de persistência ORM que fazem o mapeamento entre os objetos e as
relações. Este trabalho apresenta um estudo comparativo entre alguns dos
principais frameworks ORM desenvolvidos para a linguagem Java tendo como
objetivo principal avaliar o desempenho a fim de se obter dados que possam ser
utilizados por outros desenvolvedores. Para facilitar tais testes, faz-se o uso da API
JPA que permite a fácil migração entre esses frameworks com pequenas alterações
em sua configuração.
Palavras-chave: Persistência. Framework ORM. JPA. Benckmark.
ABSTRACT
Storage and data management activities are critical to information systems.
These systems are supported mostly by managers relational database. Increasingly,
such systems are being developed utilizing the concepts and object-oriented
languages. In this context there is a great difference between the functioning of
semantic concepts of object orientation, for the development of systems, and the
concepts of relational databases, where applications developed persist your data.
One possible solution would be to use ORM persistence frameworks that make the
mapping between objects and relations (tables). This paper presents a comparative
study between some of the major ORM frameworks developed for the Java language
with the main objective to evaluate the performance in order to obtain data that can
be used by other developers. To facilitate these tests, it is using the JPA API that
allows easy migration between these frameworks with small changes to your
configuration.
Keywords: Persistence. ORM Framework. JPA. Benckmark
Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 4., n.8, jan/jun de 2013
111
INTRODUÇÃO
A persistência de dados, normalmente refere-se à ação de guardar dados em
um banco de dados relacional. Essa abordagem de banco de dados relacionais é
bem conhecida e possui gerenciamento flexível de dados. Segundo Bauer e King
(2007, p. 6): "Devido ao completo e consistente fundamento teórico do modelo de
dados relacional, banco de dados relacionais podem efetivamente garantir e
proteger a integridade dos dados, dentre outras características desejáveis".
Sistemas de gerenciamento de banco de dados relacionais não são
específicos para uma linguagem de programação e nem a uma aplicação em
particular. Esse princípio é conhecido como independência de dados, afinal os
dados vivem por mais tempo que as aplicações. Segundo Bauer e King (2007) a
tecnologia relacional fornece um modo de compartilhar os dados por entre essas
diferentes aplicações, sendo então um denominador comum de vários sistemas e
tecnologias das plataformas diferentes.
O uso de linguagens orientadas a objetos tem se solidificado nos últimos
anos. Segundo o site TIOBE Software (2011) esse tipo de linguagem é o que tem
maior crescimento de uso nos últimos cinco anos. Existe uma diferença conceitual
muito grande entre a programação orientada a objetos e a persistência de dados em
bancos relacionais, o que geralmente causa grandes dificuldades durante o
processo de desenvolvimento de software que fazem uso das duas abordagens.
O Mapeamento de Objeto-Relacional (ORM) é uma abordagem que permite a
construção de sistemas utilizando o paradigma orientado a objetos com a
persistência, destes objetos, em bancos de dados relacionais. Com a utilização de
técnicas e estratégias específicas, é possível mapear classes com seus atributos e
associações para o modelo relacional (SILVA et al. apud Carvalho, 2006).
Atualmente no mercado existem diversos frameworks ORM, bem como,
aplicações de banco de dados, fazendo com que desenvolvedores tenham uma
gama enorme de opções. Porem é necessário que essas aplicações promovam
confiabilidade e robustez e principalmente consigam mapear os dados de forma
correta e integra.
O objetivo deste trabalho é analisar o desempenho dos principais frameworks
ORM disponíveis para a linguagem Java: Hibernate, EclipseLink e Oracle TopLink,
verificando-se a performance em diferentes situações. Para facilitar a migração entre
Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 4., n.8, jan/jun de 2013
112
os frameworks será utilizado Java Persistence API (JPA) para interfacear os ORMs.
Essa pesquisa pode ajudar a desenvolvedores optarem por determinados
frameworks dependendo do contexto de suas aplicações.
1
FUNDAMENTOS CONCEITUAIS
1.1
Frameworks
Framework é um projeto, que pode ser reutilizável em um sistema ou somente
parte dele, representado por classes relacionadas. Segundo Pazin (2004, p. 16):
“Framework é uma infra-estrutura genérica, baseada em um domínio, que pode ser
adaptada para solucionar problemas específicos desse domínio, servindo como um
modelo para a construção de aplicações através da especificação das classes e das
colaborações entre elas”.
O principal proposito de um framework é ajudar no processo de
desenvolvimento de aplicações, permitindo que elas sejam desenvolvidas mais
rapidamente e facilmente, resultando em uma aplicação de qualidade superior.
Framework funciona como um molde para construção de aplicações e subsistemas,
permite o reuso de código e de projeto, liberando o desenvolvedor de aspectos
comuns da aplicação.
Todas as aplicações construídas a partir de um mesmo framework
apresentam
características
similares,
diferenciando-se
em
seu
comportamento, que varia conforme a necessidade da aplicação. Isso torna
as aplicações desenvolvidas, a partir de frameworks mais fáceis de se
manter e mais consistentes para os usuários que não precisam aprender
diferentes aplicações. (PAZIN, 2004, p.16).
1.2
Persistência de dados em aplicações orientadas a objetos
Objeto é a instancia de uma classe, e a persistência de seus dados permite a
ele sobreviver ao processo que o criou, em outra palavras, o estado do objeto pode
ser armazenado, e um objeto com um mesmo estado pode ser recriado em algum
ponto no futuro. Este processo não está limitado a um objeto sozinho, redes inteiras
de objetos interconectados podem ser persistentes.
De acordo com Bauer e King (2007), a grande maioria dos objetos não é
persistente, havendo também o objeto transiente que tem um tempo de vida
Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 4., n.8, jan/jun de 2013
113
limitado, sendo delimitado pela vida do processo que o instanciou. Quase todas as
aplicações Java possuem objetos persistentes e transientes e devido a isso se faz
necessário um subsistema que gerencie esses dados persistentes.
A persistência de dados sempre foi um problema entre os desenvolvedores
Java, muitos automatizavam funções existentes no sistema e as armazenavam no
banco de dados, ou seja, com as mudanças no sistema ou troca do banco de dados
acabava-se tornando um transtorno, afinal em muitos casos o banco de dados tem
um dialeto próprio. A intenção dos frameworks ORM é tentar construir aplicações
que permitam portabilidade total.
Segundo Carvalho (2008) o ORM se comporta como uma camada que possui
uma gama de métodos que cuidam de tarefa, tais como: create (cria um novo objeto
da classe a partir dos dados da tabela), find (busca um determinado registro no
banco e o torna um objeto da classe), delete (exclui registros do banco) e update
(atualiza registros de uma tabela de acordo com as solicitações). Esses métodos
variam de acordo com a linguagem que será utilizada pelo desenvolvedor.
Os bancos de dados relacionais modernos fornecem uma representação
estruturada dos dados persistentes. Segundo Bauer e King (2007) ele permite a
manipulação, classificação, busca e a agregação dos dados e os sistemas de
gerenciamento de banco de dados são responsáveis por gerenciar a concorrência e
a integridade dos dados e também compartilhar os dados entre os múltiplos usuários
e múltiplas aplicações.
Para utilizar qualquer uma das aplicações de banco de dados disponíveis no
mercado é necessário um entendimento sólido do modelo relacional e de SQL, que
é a linguagem para sua manipulação. O banco de dados é somente uma das partes
do ORM a outra parte consiste nos objetos da sua aplicação Java que necessitam
ser persistidos e carregados no banco de dados utilizando o SQL.
Quando se trabalha com um banco de dados SQL em uma aplicação Java, o
código Java trata das declarações para o banco de dados via API de Conectividade
chamada, Java Database Connectivity (JDBC).
Seja o SQL embutido no código Java, escrito a mão, ou mesmo gerado
dinamicamente pelo Java, acaba-se utilizando a API JDBC para vincular os
argumentos, no intuito de preparar os parâmetros para consulta, executar as
consultas, recuperar valores, assim por diante. Essas são tarefas de acesso aos
Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 4., n.8, jan/jun de 2013
114
dados de baixo nível. O que se busca é escrever um código que salve e recupere os
objetos - instancias das classes- no banco de dados sem esse penoso trabalho de
baixo nível.
1.3
Frameworks de Mapeamento Objeto-Relacional (ORM)
1.3.1 Hibernate
O Hibernate é um framework que se relaciona com o banco de dados
relacional
garantindo
ao
desenvolvedor
a
transparência
no
mapeamento
objeto/relacional. Para isso, o deve-se seguir algumas regras para desenvolvimento,
e o restante da comunicação com o banco de dados fica com sobre a
responsabilidade do framework
O Hibernate é uma ferramenta que faz o mapeamento objeto/relacional no
ambiente Java. O termo de mapeamento de objeto/relacional se refere à
técnica de mapear uma representação de dados de um modelo de objeto
para dados de modelo relacional com o esquema baseado em SQL.
(HIBERNATE, s.d)
O Hibernate automatiza muitas tarefas de códigos repetitivas, mas não cuida
somente do mapeamento de classes Java para tabelas de banco de dados (e de
tipos de dados em Java para tipos de dados em SQL), fornece também facilidade de
consultas e recuperação de dados, podendo reduzir significantemente o tempo de
desenvolvimento gasto com a manipulação manual de dados no SQL e JDBC.
Graças ao Hibernate, o esquema de banco de dados pode ser facilmente
melhorado e manipulado, permitindo criar uma implementação apropriada do modelo
de domínio mais tarde. (HIBERNATE, s.d).
1.3.2 EclipseLink
O Eclipse Persistence Services Project, mais conhecido como EclipseLink, é
uma solução abrangente de persistência open source. Seu projeto foi iniciado por
uma doação do código-fonte completo e suítes de teste de produtos da Oracle
TopLink. Este projeto traz a experiência de mais de 12 anos de uso comercial e de
desenvolvimento .(CLARKE, 2008).
Similar ao Hibernate, a intenção do projeto é oferecer uma solução baseada
em padrões centrados no JPA, mas com a capacidade de usar recursos avançados
Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 4., n.8, jan/jun de 2013
115
para aquelas aplicações onde são necessários. Segundo Clarke (2008), o serviço de
persistência mais popular do EclipseLink é lidar com bancos de dados relacionais
através de JPA.
Segundo Clarke (2008): “Este apoio de mapeamento tem evoluído ao longo
de muitos anos de uso comercial lidando com muitos modelos de domínio e
esquemas relacionais. O apoio resultante é suportado através de JPA sempre que
possível e configurável com mapeamentos”.
O EclipseLink apresenta uma solução poderosa e original de
cache, enquanto outras soluções de persistência armazenam em cache as
linhas de dados e reconstroem objetos quando ocorre um cache hit,
EclipseLink mantém em cache as entidades com todas as conversões de
dados definidos. (Clarke, 2008)
1.3.3 Oracle TopLink
O TopLink permite mapear um modelo de objeto Java e Java Beans para um
banco de dados relacional e as fontes de dados não-relacionais. Ele faz a ponte
entre objetos e as relações que existem entre eles e os bancos de dados relacionais.
Com TopLink o usuário pode reduzir o tempo e o custo de desenvolvimento pois ele
proporciona a utilização de um comprovado padrão da indústria de frameworks de
persistência. (MANUAL, 2002).
TopLink permite desenvolver aplicações de alto desempenho e
escalábilidade usando um rico conjunto de comprovado desempenho.
(MANUAL, 2002).
De acordo com o Manual (2002) o TopLink fornece recursos como:
a) Manter a independência de plataforma através da utilização de um produto
Java 100 por cento puro que podem ser executados em qualquer
ambiente Java ou servidor de aplicativos Java.
b) Manter a independência de dados através da utilização do TopLink no
nível do objeto e API nível de objeto de consulta.
c) Acessar qualquer banco de dados através de um driver JDBC compatível
e acesso não-relacional a fontes de dados através de TopLink SDK para
Sistemas de Informação Empresariais.
d) Integra-se com tecnologia de ponta
Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 4., n.8, jan/jun de 2013
116
1.3.4 Java Persitence API (JPA)
O JPA lida com a forma como os dados relacionais são mapeados para
objetos Java, a maneira que esses objetos são armazenados em um banco de
dados relacional para que eles possam ser acessados em um momento posterior, e
a existência continuada de um estado da entidade mesmo após a aplicação que usa
ela termina. Além de simplificar o modelo de persistência da entidade, o JPA
padroniza mapeamento objeto-relacional. (BISWAS; ORT, 2006).
Para Biswas e Ort (2006), Java Persistence API baseia-se em ideias de
frameworks de persistência de liderança e APIs como Hibernate, TopLink da Oracle
e Java Data Objects.
O JPA simplifica o modelo de programação para a persistência de entidade.
Abaixo uma lista rápida de recursos segundo Biswas e Ort (2006).
a) Requer menos classes e interfaces
b) Praticamente elimina os descritores de implementação prolongados
através de anotações
c) Endereços mais especificações típicas através de padrões de anotação.
d) Fornece
mais
limpo,
mais
fácil,
mapeamento
objeto-relacional
padronizados.
e) Elimina a necessidade de código de pesquisa.
f) Adiciona suporte para herança, polimorfismo, e consultas polimórficas.
g) Adiciona suporte para named (estático) e consultas dinâmicas.
h) Java fornece uma linguagem de consulta Persistência.
i) Torna mais fácil para testar entidades fora do container EJB.
j) Pode ser usada fora do recipiente
k) Pode ser usado com pluggable, terceiros prestadores de persistência
2
PROTÓTIPO DE APLICAÇÃO PARA OS CASOS DE TESTES
O objetivo deste trabalho é analisar o desempenho dos principais frameworks
ORM disponíveis para a linguagem Java, para isso foram realizados testes
utilizando-se um protótipo de sistema simples para a gestão de vendas on-line, onde
é possível realizar a venda de determinados produtos a clientes. A Figura 1 ilustra o
Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 4., n.8, jan/jun de 2013
117
diagrama de classes desse protótipo.
Figura 1. Diagrama de classes Prototipo vendas on-line
Fonte: Elaborado pelos autores, 2012.
Como estratégia para os testes desenvolvidos foi utilizado o banco de dados
Oracle como padrão. Os testes foram baseados na utilização dos frameworks:
TopLink, EclipseLink e Hibernate, onde todos fazem as mesmas operações no
banco de dados. A análise se fundamentou no tempo de execução dessas
operações em cada um dos frameworks apresentados. Os testes foram
desenvolvidos utilizando-se o ambiente de desenvolvimento intregrado (IDE)
NetBeans 6.9.1. A operação escolhida para a análise foi a de inserção e os testes
foram aplicados nas seguintes classes:
Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 4., n.8, jan/jun de 2013
118
a) Unidade Medida: onde não ocorre nenhuma relação de dependência e
nem associação entre objetos (tabela sem recebimento de chaves
estrangeiras).
b) Pessoa Física: que herda da classe Cliente.
c) Produto: que possui relacionamento de associação com a classe Unidade
Medida (isso gera uma tabela que recebe uma chave estrangeira).
d) Venda: possui relação com duas classes, uma associação com a classe
Clientes e uma associação com a classe Itens Vendidos, que por sua vez
tem agregação com Produtos.
e) Todas as classes do sistema.
As inserções foram feitas com: 1 objeto, 1.000 objetos, 5.000 objetos e
10.000 objetos, produzindo respectivamente 1 linha, 1.000 linhas, 5.000 linhas e
10.000 linhas nas tabelas do banco de dados. Os testes foram realizados em um
computador com as seguintes configurações:
a) Processador: Intel Atom N455 1666 MHz.
b) Modelo: Hewlett-Packard HP Mini 110-3100.
c) Memória RAM: 2036 MB.
d) Interface da unidade de armazenamento: Serial ATA II.
e) Sistema Operacional: MS Windows 7 Ultimate Service Pack 1.
3
RESULTADOS DOS TESTES
3.1
Teste 1: Persistência de objetos da classe Unidade de Medida
A Figura 2 ilustra o gráfico com os resultados do Teste 1. Percebe-se que não
houve variações significativas de tempos de execução nos três tipos de frameworks
utilizados, visto que ocorreu apenas uma diferença de 1 segundo nos testes de
inserção de linhas. Sendo assim, com inserções de 1.000 objetos o EclipseLink foi 1
segundo mais rápido que os demais; com inserções de 5.000 objetos o Hibernate foi
um segundo mais rápido que os demais; com inserções de 10.000 objetos o Oracle
TopLink foi 1 segundo mais rápido que os demais.
Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 4., n.8, jan/jun de 2013
119
Figura 2: Teste tabela Unidade Medida
Fonte: Elaborado pelos autores, 2012.
3.1.1 Teste 2: Persistência de objetos utilizando Herança
Figura 3: Teste tabela Pessoa Física
Fonte: Elaborado pelos autores, 2012.
A Figura 3 ilustra o gráfico como os resultados do Teste 2. Observando-se
esse gráfico é possível perceber que nos testes realizados com inserções de 5.000
objetos houve-se um desenpenho um pouco maior com o TopLink em relação aos
demais, sendo ele 8 segundos mais rápido que o Hibernate por exemplo, porém ao
aumentar as inserções para 10.000 objetos o Hibernate mostrou-se mais rápido 10
segundos em relação ao TopLink e 33 segundos que o EclipseLink.
Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 4., n.8, jan/jun de 2013
120
3.3
Teste 3: Persistência de objetos que possui relacionamento com uma
classe
Os resultados, ilustrados no gráfico da Figura 4, apresentam um melhor
desempenho no framework EclipseLink com inserções de 5.000 objetos, sendo 3
segundos mais rapido que o TopLink e 5 segundos mais rapido que o Hibernate,
porém, o desempenho do Framework Hibernate e TopLink foram melhor em 20
segundos sobre o EclipseLink nos testes de inserções com 10.000 objetos.
Figura 4: Teste tabela Produto
Fonte: Elaborado pelos autores, 2012.
3.4
Teste 4: Persistência de objetos com dois relacionamentos
No teste com a classe Venda verifica-se um desempenho consideravelmente
bom do framework TopLink em relação aos demais frameworks. Seu desempenho
foi melhor em 1.000, 5.000 e 10.000 inserções de objetos. Nos testes com 10.000
inserções de objetos o TopLink teve um desempenho melhor sobre o Hibernate de 4
segundos e sobre o EclipseLink de 10 segundos. Tal situação pode ser verificada na
Figura 5 que ilustra tal teste.
Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 4., n.8, jan/jun de 2013
121
Figura 5: Teste tabela Venda
Fonte: Elaborado pelos autores, 2012.
3.5
Teste 5: Inserção em todas as classes do sistema
Figura 6: Inserção em todas as tabelas
Fonte: Elaborado pelos autores, 2012.
Na figura 6, verifica-se um desempenho melhor do Framework TopLink em
inserções de 1.000 objetos, sendo mais rápido que o segundo (Hibernate) em 4
segundos, nas inserções de 5.000 objetos o topLink manteve seu desempenho
melhor em, 8 segundos sobre o EclipseLink e 9 segundos sobre o Hibernate. Nas
inserções de 10.000 objetos o topLink também foi melhor que os demais, sendo 17
Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 4., n.8, jan/jun de 2013
122
segundos mais rápido que o Hibnernate e 21 segundos mais rápido que o
EclipseLink.
CONCLUSÃO
Vem se tornando cada dia mais importante a criação de sistemas
computacionais que respondam cada vez mais rápido às grandes demandas de
acesso a dados. Devido a isso é necessário, garantir que o acesso aos dados seja
feito de modo eficiente, especialmente em aplicações corporativas.
Nesse contexto, este trabalho apresentou um estudo comparativo entre três
frameworks de persistência Java: EclipseLink, TopLink e Hibernate. Tais frameworks
diminuem o tempo necessário de desenvolvimento de aplicações orientadas a
objetos que necessitam persistir seus dados em banco de dados relacionais, porém,
isso não significa que o acesso aos dados será sempre mais rápido.
Quando poucos dados são adicionados, a diferença entre o desempenho
dessas implementações não é significativo. Entretanto essa afirmativa não é
verdade quando se tratam de grandes volumes de dados. Em outras palavras,
inserir, por exemplo, uma ou dez linhas em um banco de dados não mostrará
diferenças significativas de desempenho, porém inserir 5.000 ou 10.000 linhas
apresentam diferenças significativas no desempenho.
Considerando que todas as implementações foram usadas com o mínimo de
recursos possíveis para o funcionamento destas, o TopLink foi, sem dúvidas, a
implementação mais estável de todas, estando entre as mais rápidas na inserção de
tabelas simples e sendo a mais rápida nas tabelas mais complexas, como
demonstrado nos testes.
Em testes feitos anteriormente por Barbon (2011), onde foram testados os
Frameworks Hibernate e TopLink, com inserções e seleções no banco de dados
MySQL foi verificado um melhor desempenho do Framework Hibernate, com
grandes diferenças, onde em sua maioria os resultados foram quase metade do
tempo de resposta.
Essa divergência de resultados pode ser fundamentada no fato do uso do uso
de um banco de dados diferente, nos testes feitos por Barbon (2011) foi utilizado o
MySQL como já foi dito, e na proposta deste trabalho foi utilizado o Oracle e isso
Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 4., n.8, jan/jun de 2013
123
pode ter auxiliado para que o Framework da Oracle – TopLink – tenha tido um
melhor desempenho.
Esse estudo fundamenta-se apenas e operações de inserções, o que limita
bastante essa conclusão deste trabalho. Como proposta para trabalhos futuros,
sugere-se a criação de um conjunto de teste que simule todas as operações básicas
de um banco de dados: INSERT, UPDATE, DELETE e SELECT. Nesses testes
pode-se ainda tentar o uso de outras bases de dados como MySQL, PostGres, SQL
Server, DB2 entre outras. Aumentar a quantidade de vezes de realização dos testes,
para que se possa observar se há mudanças significativas no tempo de realização
das ações pode ser uma outra sugestão para aumentar a credibilidade dos
resultados apresentados.
REFERÊNCIAS
BARBON, S. Comparação de desempenho entre Hibernate e TopLink para
persistência baseada em JPA com MySQL. Patternizando, 11 jan 2011.
Disponível
em:
<http://www.patternizando.com.br/2011/01/comparacao-dedesempenho-entre-hybernate-e-toplink-para-persistencia-baseada-em-jpa-commysql/> Acesso em: 17 mai. 2012.
BAUER, C; KING, G. Java Persistence com Hibernate. Rio de Janeiro: Ciência
Moderna, 2007.
BISWAS, R.; ORT, E. A Java Persistence API - um modelo mais simples de
programação para a persistência da entidade. Oracle, mai 2006. Disponível em:
<http://www.oracle.com/technetwork/articles/javaee/jpa-137156.html> Acesso em: 15
nov. 2011.
CARVALHO, L. Object-Relational Mapping(ORM) – Mapeamento de ObjetoRelacional. RedRails, 13 abr 2011. Disponível em:<www.redrails.com.br/ 2011
/04/object-relational-mappingorm-mapeamento-de-objeto-relacional/> Acesso em: 15
set. 2011.
CLARKE, D. Apresentando EclipseLink. Eclipse Zone, 30 jun 2008. Disponível em:
<http://eclipse.dzone.com/articles/introducing-eclipselink?page=0,0> Acesso em: 14
nov. 2011
HIBERNATE. Community Documentation. Hibeernate, [s.d.] Disponível em:
<http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/architecture.
html>
Acesso em: 14 nov. 2011.
MANUAL. Oracle9iAs TopLink. Oracle, ago 2002. Disponível em:
<http://download.oracle.com/docs/cd/A9768816/toplink.903/b10061.pdf> Acesso em:
Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 4., n.8, jan/jun de 2013
124
14 nov. 2011.
PAZIN, A. GawCRe: Um gerador de aplicações baseadas na web para o
domínio de clinicas de reabilitação. 2004. Dissertação (Mestrado em Ciências da
Computação) – Universidade Federal de São Carlos, Centro de Ciências Exatas e
de Tecnologia, São Carlos.
TIOBE Programming Community index de novembro de 2011. Tiobe software,
[s.d.]. Disponível em: <www.tiobe.com/index.php/content/paperinfo/tpci/index.html>
Acesso em: 23 set. 2011.
Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 4., n.8, jan/jun de 2013
125
Download