Análise de Desempenho dos Frameworks de Persistência Hibernate e EclipseLink



Documentos relacionados
Análise de Desempenho dos Frameworks de Persistência Hibernate e Spring Data

UNIVERSIDADE ESTADUAL DO CENTRO-OESTE UNICENTRO CURSO DE ESPECIALIZAÇÃO EM MÍDIAS EM EDUCAÇÃO

UFG - Instituto de Informática

RESUMO. Palavras-chave: Persistência. Framework ORM. JPA. Benckmark. ABSTRACT

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate

JPA Passo a Passo. Henrique Eduardo M. Oliveira henrique@voffice.com.br. Globalcode Open4Education

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

UNIVERSIDADE FEDERAL DA BAHIA INSTITUTO DE MATEMÁTICA CIÊNCIA DA COMPUTAÇÃO LINGUAGENS PARA APLICAÇÃO COMERCIAL. Java Peristence API 1.

Ferramenta de apoio a gerência de configuração de software. Aluno: Rodrigo Furlaneto Orientador: Everaldo Artur Grahl

Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44

ALTO DESEMPENHO UTILIZANDO FRAMEWORK HIBERNATE E PADRÃO JAVA PERSISTENCE API

Universidade Federal de Goiás Ciências da Computação Sistemas Operacionais 2

HIBERNATE EM APLICAÇÃO JAVA WEB

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

Persistência de dados com JPA. Hélder Antero Amaral Nunes

Manual de Procedimentos para Desenvolvimento de Softwares

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

INTRODUÇÃO E CONFIGURAÇÃO DO PRIMEFACES MOBILE EM APLICAÇÕES JSF

APLICATIVO WEB PARA O SETOR DE EXTENSÃO IFC VIDEIRA

Banco de Dados de Músicas. Andre Lima Rocha Campos Osório Pereira Carvalho

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS

JPA: Persistência padronizada em Java

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS

Feature-Driven Development

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO

Arquitetura de Banco de Dados

Desenvolvendo Websites com PHP

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Persistência de Dados em Java com JPA e Toplink

FICHA DE CATALOGAÇÃO DE REVISTAS DE NOTÍCIAS. Coleção

Taxa de Gravação da Memória RAM (MegaBytes / segundo) G5 2.7 Ghz (Mac) Linux Kernel

ISO/IEC 12207: Gerência de Configuração

gerenciamento de portais e websites corporativos interface simples e amigável, ágil e funcional não dependendo mais de um profissional especializado

Principais Comandos SQL Usados no MySql

PROGRAMAÇÃO SERVIDOR PADRÕES MVC E DAO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

SAV Sistema de Aluguel de Veículos I - DOCUMENTO DE REQUISITOS Versão 1.00

WebApps em Java com uso de Frameworks

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Documento de Análise e Projeto VideoSystem

Oficina. Praça das Três Caixas d Água Porto Velho - RO

UFG - Instituto de Informática

Banco de Dados. Aula 1 - Prof. Bruno Moreno 16/08/2011

José Benedito Lopes Junior ¹, Marcello Erick Bonfim 2

Banco de Dados. Maurício Edgar Stivanello

Universidade Federal de Santa Catarina Centro Tecnológico Curso de Sistemas de Informação. Proposta de Trabalho de Conclusão de Curso

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Microsoft Access XP Módulo Um

SISTEMA TYR DIAGRAMAS DE CLASSE E SEQUÊNCIA Empresa: Academia Universitária


A Grande Importância da Mineração de Dados nas Organizações

COMPARAÇÃO ENTRE OS FRAMEWORKS DE DESENVOLVIMENTO DE SOFTWARE ENTITY FRAMEWORK E NHIBERNATE : ESTUDO DE CASO EM UM SISTEMA

UFG - Instituto de Informática

FERRAMENTA WEB PARA MODELAGEM LÓGICA EM PROJETOS DE BANCOS DE DADOS RELACIONAIS

SQL. Curso Prático. Celso Henrique Poderoso de Oliveira. Novatec

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS

Banco de Dados I. Apresentação (mini-currículo) Conceitos. Disciplina Banco de Dados. Cont... Cont... Edson Thizon

LINGUAGEM DE BANCO DE DADOS

Aula 5. Carlos Eduardo de Carvalho Dantas

Padrão ix. Manual de Instalação do Q-Ware Server Versão

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011

Dadas a base e a altura de um triangulo, determinar sua área.

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

Palavras-chave: i3geo, gvsig, Mapserver, integração, plugin. Contato: ou

Disciplina de Banco de Dados Introdução

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Artur Petean Bove Júnior Tecnologia SJC

Comandos de Manipulação

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Documento de Arquitetura

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Persistência e Banco de Dados em Jogos Digitais

Documento de Projeto de Sistema

Banco de Dados. Introdução. João Eduardo Ferreira Osvaldo Kotaro Takai. DCC-IME-USP

Structured Query Language (SQL)

QUESTÃO 01 - DIAGRAMA DE SEQUENCIA (CONCEITOS)

Manual de Operação do Oracle Designer Projeto PRINT

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

5.1 Exemplos de uso Mediante a instanciação de componentes específicos, o OiL pode ser configurado

W Projeto. Gerenciamento. Construindo a WBS e gerando o Cronograma. Autor: Antonio Augusto Camargos, PMP 1/12

MUDANÇAS NA ISO 9001: A VERSÃO 2015

Especificação do Trabalho

Desenvolvimento de um software de gerenciamento de projetos para utilização na Web

Banco de Dados. Prof. Antonio

FRWTC-235 WORKSHOP ORACLE CERTIFIED JAVA EE 6 JPA DEVELOPER

Glossário Apresenta a definição dos termos, siglas e abreviações utilizadas no contexto do projeto Citsmart.

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

Noções de. Microsoft SQL Server. Microsoft SQL Server

Treinamento. DBA Oracle 11g. Duração: 120 horas

Prof.: Clayton Maciel Costa

DESENVOLVIMENTO DE UM APLICATIVO DO TIPO SECRETÁRIO VIRTUAL PARA A PLATAFORMA ANDROID

INFLUÊNCIA DA TECNOLOGIA DA INFORMAÇÃO NA GESTÃO DA ÁGUA E ESGOTO

Transcrição:

Análise de Desempenho dos Frameworks de Persistência e EclipseLink Aurélio Vargas Ramos Júnior 1, Edson A. Oliveira Junior 2 Resumo. Nas aplicações de software é comum o armazenamento de dados persistentes. Esses sistemas são apoiados, em sua maioria, por gerenciadores de banco de dados relacionais, um framework de persistência gerencia a base de dados e o mapeamento entre a base de dados e os objetos. Este artigo compara a performance de dois frameworks de persistência e EclipseLink JPA usando uma base de dados de uma locadora de DVDs. Para facilitar tais testes, faz-se uso da API JPA que permite a fácil migração entre esses frameworks com pequenas alterações em sua configuração. Palavras-chave: framework, ORM,, JPA, EclipseLink, benchmark. Abstract. In the applications software is common to store persistent data. These systems are supported mostly by managers relational database, a persistence framework manages the database and the mapping between the database and the objects. This paper compares the performance of two persistence frameworks and EclipseLink JPA using a DVD rental database. To facilitate these tests, it is using the JPA API that allows easy migration between these frameworks with small changes to your configuration. Keywords: framework, ORM,, JPA, EclipseLink, benchmark. 1. Introdução Trabalhar com software orientado a objetos e bancos de dados relacionais pode ser trabalhoso e demorado, devido a incompatibilidade entre o paradigma de representação dos dados no modelo de objetos e o modelo de bancos de dados relacionais (conflito de impedância) [7]. Frameworks de mapeamento objeto relacional são uma solução. O Mapeamento Objeto-Relacional, (Object Relational Mapping - ORM) refere-se à técnica de mapeamento de dados a partir de uma representação do modelo de objeto em uma representação do modelo de dados relacional [3]. Servindo como uma ponte entre esse conflito de impedância o que torna a persistência de objetos mais simples, o trabalho do desenvolvedor é definir como os objetos são mapeados nas tabelas do banco e o Framework ORM faz o acesso ao banco, gerando inclusive os comandos em SQL necessários para tarefas padrões. Este artigo tem como meta comparar dois frameworks ORM, o que é um dos mais consolidados por desenvolvedores Java e.net e o EclipseLink, um framework extensível que permite interagir com vários serviços de dados, incluindo Banco de Dados, Web Services, Objetos XML, EIS, etc. Sendo assim, EclipseLink não implementa apenas o padrão JPA, mas também outros padrões como JAXB, JCA e SDO. Para tal comparação serão utilizadas algumas operações de 1 Aluno do curso de especialização em Desenvolvimento de Sistemas para Web Universidade Estadual de Maringá (UEM) - Av. Colombo, 5790 Bloco C56 Maringá PR Brasil ramos.junior@outlook.com 2 Departamento de Informática Universidade Estadual de Maringá (UEM) - Av. Colombo, 5790 Bloco C56 Maringá PR Brasil - edson@din.uem.br 1

persistência a saber: consultas simples e com joins, inserção, alteração e exclusão. Será utilizada uma média do desempenho dos procedimentos executados para encontrar o framework com menor tempo médio nas operações de persistência. Este artigo está organizado da seguinte forma: na Seção 2 são abordadas as tecnologias utilizadas para efetuar a comparação dos frameworks; na Seção 3 é realizado o estudo comparativo de desempenho entre e EclipseLink e na Seção 4 é apresentada a conclusão e trabalhos que podem ser desenvolvidos futuramente. 2. Revisão Bibliográfica 2.1. O framework foi desenvolvido por uma equipe de programadores Java liderada por Gavin King e teve sua primeira versão divulgada em 2004. Segundo King [5], um dos objetivos ao criar o projeto era resolver seus problemas referentes à persistência causados pelo EJB 2.0, o qual considerava muito complexo. Devido à popularidade do projeto e por se tratar de um projeto pessoal, King utilizava seu tempo livre para que pudesse resolver problemas identificados pelos usuários do. Com um escopo muito vasto, o projeto tornou-se inviável de ser mantido apenas nos tempos livres, assim King aceitou entrar para o JBoss Group, passando a ser remunerado para continuar a desenvolver o projeto, o que lhe permitiu dedicação completa ao [5]. Com a especificação da JPA (Java Persistence API), solidificou-se como a implementação mais utilizada. Diversos projetos também passaram a ser desenvolvidos pela equipe do a fim de aprimorar os recursos existentes no framework. Muitos deles, em vez de serem anexados ao projeto Core, tornaram-se plugins, tais como Search, o OGM e o Validator. Este último, inclusive, teve fortes influências para a criação de uma nova especificação, a Bean Validation (JSR 303). A partir da versão 3.5, o tornou-se uma implementação certificada para a JPA2 (JSR 317), lançada oficialmente no final de 2009. Várias annotations surgiram e muitos recursos foram aprimorados [9]. A escolha do se deve ao fato de ele ser o framework ORM Java mais consolidado do mercado e implementar a especificação padrão Java EE para persistência, o JPA. 2.2. EclipseLink JPA 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. Esse projeto traz a experiência de mais de 12 anos de uso comercial e de Desenvolvimento [1]. Podese dizer que o EclipseLink evoluiu ao ponto de ser uma ferramenta superior ao TopLink. É dito que as próximas versões do TopLink incluirão o EclipseLink, assim como a próxima versão do Oracle Application Server [4]. Similar ao, a intenção do projeto é oferecer uma solução baseada em padrões centrados no JPA [1]. A escolha do EclipseLink se deve porque apesar do ter originado a JPA, o EclipseLink substituiu o produto Oracle TopLink Essentials e também se tornou a implementação de referência da versão JPA 2.0, sendo distribuído juntamente com o servidor de aplicações GlassFish V3 [10]. 2.3. Java Persistence API (JPA) O Java Persistence API (JPA) é uma especificação de persistência padrão aprovada pela JCP (Java Community Process) em meados de 2006, como parte da especificação EJB3 (Enterprise Java Beans 3). O JPA lida com a forma como os dados 2

relacionais são mapeados para objetos Java, a maneira que esses objetos são armazenados em um banco de dados relacional para que possam ser acessados posteriormente e, a existência continuada de um estado da entidade mesmo após a aplicação que usa termina. Além de simplificar o modelo de persistência da entidade, o JPA padroniza mapeamento objeto-relacional [4]. Neste artigo a base de dados foi mapeada utilizando do padrão JPA 2.0, para padronizar a aplicação o que torna possível que a aplicação seja independente do framework abordado. Sendo assim para cada teste, foi necessário somente alterar a biblioteca utilizada pela aplicação (framework). 2.4. Protótipo de aplicação para os casos de teste O objetivo deste trabalho é analisar o desempenho dos frameworks e EclipseLink de ORM para a linguagem Java, para isso foram realizados testes utilizandose um protótipo de sistema simples para a gestão de locadora de filmes. A base de dados DVD rental é uma base de testes que foi portada para o Postgres do banco de dados Sakila, originalmente para MySQL e desenvolvida por Mike Hillyer do MySQL AB documentation team. Essa base foi modificada para se adequar às funcionalidades do PostgreSQL 3. O DVD rental representa um processo de comércio de uma loja de locação de DVD com aproximadamente 300.000 registros. Possuindo muitos objetos como: 15 tabelas 1 trigger 7 views 8 funções 1 domínio 13 seqüências A Figura 1 ilustra o diagrama de entidade-relacionamento dessa base. 3 O esquema e seus dados estão disponíveis no endereço: http://www.postgresqltutorial.com/postgresqlsample-database/ 3

Figura 1: Modelo Entidade-Relacionamento do banco de dados Dvd Rental. 3. Estudo Comparativo de Desempenho entre e EclipseLink JPA 3.1. Ambiente de Execuções Para efetuar as execuções de benchmark foi utilizado: Eclipse Kepler Java EE for Web Developers como ambiente de desenvolvimento integrado (IDE); 4.3.1; EclipseLink JPA 2.5.1; Postgres 9.3; Java JDK 1.7.0_45; Sistema Operacional Linux Mint 16 Petra x86_64 GNU/Linux; e Sistema de arquivos - ext4. O computador usado para os testes é um Dell Intel optiplex 780 processador Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz, 4GB de memória RAM. O projeto pode ser baixado no repositório GitHub https://github.com/kawekaweau/jpa-bench-test. 3.2. Planejamento, Execução e Análise dos Resultados 4

3.2.1 Definição de Contexto e Planejamento do Estudo Comparativo 3.2.1.1 Objetivo do Estudo Comparar frameworks de persistência objeto-relacional, com o objetivo de identificar o melhor desempenho com relação à operações de persistência de dados em um banco de dados relacional, do ponto de vista de analistas e desenvolvedores de software, no contexto de um estudo de caso específico para operações de persistência relacionais. 3.2.1.2 Seleção das Variáveis Variáveis independentes (entrada/causa): o Framework de persistência - e EclipseLink JPA; o Sistema Operacional Linux Mint 16 Petra x86_64 GNU/Linux; o Sistema de arquivos - ext4; e o Banco de Dados Postgres 9.3.2. Variável dependente (observação/efeito): o Desempenho. 3.2.1.3 Definição das Hipóteses Hipótese Nula (H0): os tempos médios para a execução das operações de persistência usando e EclipseLink JPA são os mesmos. Hipótese Alternativa (H1): o tempo médio de execução das operações de persistência usando é menor que o tempo médio usando EclipseLink; e Hipótese Alternativa (H2): o tempo médio de execução das operações de persistência usando é maior que o tempo médio usando EclipseLink. 3.2.2 Definição do plano de Testes 3.2.2.1 Procedimentos metodológicos Foram gravados tempos de relógio do sistema em dois momentos: na requisição e na obtenção da resposta. Calcula-se a diferença entre o tempo do momento de obtenção da resposta e o tempo do momento da requisição [6]. RES = T2 T1 T1: Tempo obtido no momento da requisição. T2: Tempo obtido no momento da resposta. RES: Tempo de resposta. 3.2.2.2 Medidas 5

Boral e Dewitt [6] definem que quatro tipos de consultas são necessárias para a realização da análise de desempenho em sistemas de bancos de dados. Grupos Utilização de CPU Utilização de Disco Tipo 1 Baixo Baixo Tipo 2 Baixo Alto Tipo 3 Alto Baixo Tipo 4 Alto Alto Quadro 1: Tipos de consultas para análise de desempenho. Segundo os autores as consultas em bancos de dados consomem basicamente dois recursos de sistema: a) Ciclos de CPU: são consumidos tanto pelo sistema que executa a consulta (a aplicação) como por outras funções executadas pelo próprio SGBD. Ciclos de CPU também são consumidos pelo Sistema Operacional na iniciação das operações de disco. b) Operações de Disco: são consumidos durante a recuperação dos dados requeridos para responder uma consulta, armazenar dados de uma consulta no disco ou atividades de swapping. As consultas foram baseadas no Quadro 1, e nas métricas definidas para avaliação das alternativas de persistência de dados num ambiente objeto relacional, por Santos e Martins [7]. Foram utilizadas 2 métricas de consulta e 3 métricas de inserção de entidades. Sendo as consultas executadas as seguintes: Inserções Consultas Inserção simples; Inserção em Cascata; Inserção relacionamento ManyToMany; Consulta em profundidade; Consulta relacionamento M:N; Consulta de 1 tupla campo indexada; Consulta de 100 tuplas em 10000 não indexadas; Consulta 1.000 tuplas de 10.000 utilizando índice com relação a outra tabela; Consulta 100 tuplas de 10.000 utilizando de função agregada; 3.2.2 Execução do Estudo Comparativo O estudo comparativo foi conduzido com base na execução de 12 operações de persistência, sendo 6 consultas, 3 inserções e 3 exclusões. Cada consulta foi executada 100 vezes, sendo efetuado o cálculo médio do desempenho de cada consulta para ser criado o gráfico dos resultados. Inserções: para testar o tempo necessário para efetuar as inserções foram testados três tipos de inserções sendo: a inserção de uma entidade disjunta [2], na qual 6

foi inserida a entidade Actor. A inserção em um relacionamento M*N (relacionamento Actor Film) e uma inserção em cascata (foram persistidas as entidades City e Country através da persistência da entidade Address). Como mostra a Figura 2, o levou um tempo maior que o EclipseLink na inserção em um relacionamento M*N, sendo que nas demais o apresentou um desempenho melhor. EclipseLink JPA 0,004 0,004 0,01 0,003 0,007 0,019 0 0,002 0,004 0,006 0,008 0,01 0,012 0,014 0,016 0,018 0,02 Tempo em segundos Simples Aninhada Relacionamento M*N Figura 2: Desempenho inserções. Consultas: foram efetuadas 6 tipos de consulta as duas primeiras são busca em profundidade (a partir da Entidade Payment obteve se a entidade Store através da junção com mais 3 entidades), nessa consulta o EclipseLink teve um melhor desempenho. A segunda consulta é o retorno de um relacionamento M*N, na qual foi buscada a entidade Rental de um cliente. Nessa consulta o apresentou um melhor desempenho como mostra a Figura 3. EclipseLink JPA 0,004 0,017 0,002 1,414 0 0,2 0,4 0,6 0,8 1 1,2 1,4 1,6 Tempo em segundos Busca Profundidade Relacionamento M*N Figura 3: Busca em Profundidade e consulta de um relacionamento M*N. Grupo 1: é uma consulta simples que busca 1 registro do tipo Customer por ID. Conforme o Quadro 1 apresentado na seção 3.2.2.2, essa consulta ocupa pouco processamento e utilização de disco. O comando utilizado para essa consulta foi: SELECT c FROM Customer c WHERE c.customerid = 3. Como mostra a Figura 4, o efetuou a consulta em 0,007s e o EclipseLink JPA efetuou a consulta em 0,006s. 7

EclipseLink JPA 0,006 0,007 0,0054 0,0056 0,0058 0,006 0,0062 0,0064 0,0066 0,0068 0,007 0,0072 Tempo em segundos Figura 4: Seleção de um registro por atributo índice. Grupo 2: é uma consulta que busca 100 registros do tipo Film por titulo e ID utilizando o operador >. Conforme o Quadro 1 apresentado na seção 3.2.2.2, essa consulta ocupa pouco processamento e muito do disco. O comando utilizado para esta consulta foi: FROM Film f WHERE f.title LIKE 'on%' AND f.filmid > 500. Como mostra a Figura 5, o efetuou a consulta em 0,004s e o EclipseLink efetuou a consulta em 0,005s. EclipseLink JPA 0,005 0,004 0 0,001 0,002 0,003 0,004 0,005 0,006 Figura 5: Seleção de 100 registros em 1000 utilizando operador LIKE. Grupo 3: é uma consulta que busca 1000 registros do tipo Payment através de uma junção com a entidade Rental e utilizando o ID de Rental para a seleção. Conforme o Quadro 1 apresentado na seção 3.2.2.2, essa consulta ocupa bastante processamento e pouca utilização do disco. O comando utilizado para essa consulta foi: SELECT p FROM Payment p LEFT JOIN FETCH p.rental LEFT JOIN FETCH p.rental WHERE p.rental.rentalid = 2. Como mostra a Figura 6, o efetuou a consulta em 0,006s e o EclipseLink efetuou a consulta em 0,008s. EclipseLink JPA 0,008 0,006 0 0,001 0,002 0,003 0,004 0,005 0,006 0,007 0,008 0,009 Figura 6: Seleção de 1.000 registros de 100.000 utilizando índice de outra entidade. 8

Grupo 4: é uma consulta que busca 100 registros do tipo Payment por ID utilizando a função de agregação COUNT(). Conforme a tabela apresentada na seção 3.2.2.2, esta consulta ocupa bastante processamento e disco. O comando utilizado para esta consulta foi: SELECT COUNT(p) FROM Payment p WHERE p.customer.customerid = 1 AND p.paymentid <= 100. Como mostra a Figura 7, o efetuou a consulta em 0,004s e o EclipseLink efetuou a consulta em 0,003s. EclipseLink JPA 0,003 0,004 0 0,0005 0,001 0,0015 0,002 0,0025 0,003 0,0035 0,004 0,0045 Figura 7: Selecionar 100 registros de 10.000 com função agregada. 3.2.3 Análise dos Dados do Estudo Comparativo Com base na execução das operações de persistência realizadas neste estudo o obteve melhor desempenho em 5 operações. O EclipseLink JPA obteve melhor desempenho em 4 operações. Sendo assim, o framework obteve o melhor desempenho total com base nas operações utilizadas neste estudo. O Quadro 2 mostra a quantidade de vezes que o framework foi superior categorizados por tipo de operação. Cláusulas EclipseLink JPA INSERT 2 1 SELECT 3 3 Total 5 4 Quadro 2: Desempenho dos frameworks categorizados por tipo de operação. Assim, o estudo realizado fornece indícios de que a hipótese nula (H0) deve ser rejeitada e, conseqüentemente, a hipótese alternativa (H1) deve ser aceita, sendo que no total de operações, o framework obteve melhor desempenho do que o framework EclipseLink JPA para as operações de consulta realizadas neste estudo. Já o framework EclipseLink obteve melhor desempenho médio nas operações. 4. Conclusões e Trabalhos Futuros Este artigo apresentou uma análise de desempenho baseada em benchmark por meio de uma série de operações de persistência com o intuito de fornecer evidências iniciais, para guiar na escolha do framework de persistência mais adequado para projetos de persistência baseados em mono-usuário e acesso não concorrente. Os resultados 9

obtidos devem ser associados à Base de Dados Postgres e Sistema Operacional Linux (Ext4). A utilização de outras bases de dados e sistema operacionais (ou sistema de arquivos), pode levar a resultados diferentes dos apresentados aqui. Com base nos resultados obtidos pode-se observar uma ligeira vantagem na utilização do com relação ao EclipseLink para o conjunto de operações de consultas e, um desempenho aproximado porém com ligeira vantagem para o EclipseLink em operações de inserção definidas pelo benchmark utilizado. Com relação a trabalhos que podem ser desenvolvidos futuramente tem-se: (i) a análise de desempenho dos frameworks trabalhado no projeto, em um sistema multiusuário; (ii) planejamento e realização de uma análise do mesmo mapeamento em base de dados distintas, a base utilizada possui implementações para outros banco de dados; (iii) planejamento e realização de uma análise comparativa com sistemas de arquivos diferentes e (iv) estudo comparativo através de métricas qualitativas dos frameworks ORM. Referências Bibliográficas [1] CLARKE, D. Apresentando EclipseLink. Eclipse Zone, 30 jun 2008. Disponível em: <http://eclipse.dzone.com/articles/introducing-eclipselink?page=0,0>. Acesso em: 15, jan, 2014 [2] DIOGO V. DOS SANTOS, MARCELO DE R. MARTINS Métricas para avaliação das alternativas de persistência de dados num ambiente objeto relacional. São Paulo: IME/USP, 2007. [3] HIBERNATE. Community Documentation. Developer Guide. Disponível em: <http://docs.jboss.org/hibernate/core/4.3/devguide/en-us/html_single >. Acesso em: 15, jan, 2014. [4] HIGOR, M. Introdução ao EclipseLink. DevMedia. Disponível em: < http://www.devmedia.com.br/introducao-ao-eclipselink/29131#ixzz2rwahkqqh >. Acesso em: 20, jan, 2014 [5] IZALMO PRIMO D S. Artigo Java Magazine 73 - Desenvolvendo com. Disponível em: < http://www.devmedia.com.br/artigo-java-magazine-73-desenvolvendo-comhibernate/14756#ixzz2rexxyhvd>. Acesso em: 15, jan, 2014. [6] JADER D. S. T. C. - Estudo comparativo entre os frameworks de Mapeamento Objeto- Relacional e Toplink. Maringá, Paraná: EspWeb/UEM. 2011. [7] PIETER VAN ZYL, DERRICK G. KOURIE, ANDREW BOAKE Comparing the Performance of Object Databases and ORM Tools. Disponível em: <http://odbms.org/download/027.01 Zyl Comparing the Performance of Object Databases and ORM Tools September 2006.PDF>. Acesso em: 10, set, 2013. [8] VITOR GOTARDO - Análise de Desempenho dos Frameworks de Persistência e Spring Data. Maringá, Paraná: EspWeb/UEM. 2013. [9] HANELLI TAVANTE As novidades do 4. Disponível em: < http://blog.caelum.com.br/as-novidades-do-hibernate-4/>. [10] SILVIO PAGANINI Persistência a toda prova. Java Magazine 81. Disponível em: < http://www.devmedia.com.br/jpa-2-0-persistencia-a-toda-prova-java-magazine-81/17437/>. [6] MIKAEL KOPTEFF The Usage and Performance of Object Databases compared with ORM tools in a Java environment. Disponível em: <http://www.odbms.org/download/045.01 Kopteff The Usage and Performance of Object Databases Compared with ORM Tools in a Java Environment March 2008.PDF>. Acesso em: 10, set, 2013. [8] SHOAIB MAHMOOD BHATTI, ZAHID HUSSAIN ABRO, FARZANA RAUF ABRO Performance Evaluation of Java Based Object Relational Mapping Tools. Disponível em: <http://publications.muet.edu.pk/research_papers/pdf/pdf755.pdf>. Acesso em: 16, nov, 2013. [9] MIKE AULT, DONALD K. BURLESON, CLAUDIA FERNANDEZ, KEVIN KLEIN, BERT SCALZO - Database Benchmarking: Practical Methods for Oracle & SQL Server. Rampant Techpress, PAP/CDR edition, p. 19, 2007. []Leia mais em: Maven, JSF 2, Spring e - Revista Java Magazine 101 http://www.devmedia.com.br/maven-jsf-2-spring-e-hibernate-revista-java-magazine- 101/23800#ixzz2vQ4TsGsk 10