Alternativa leve ao Hibernate? [fechadas]

113

Eu tenho um programa java de usuário único que gostaria de armazenar dados em um banco de dados leve, como Derby ou Sqlite. Eu gostaria de usar uma camada de abstração de dados em meu programa. O Hibernate parece requerer muitas configurações e é um exagero para o que eu preciso. Quais são as alternativas leves ao Hibernate?

Jared
fonte
2
Você pode verificar alternativas junto com o uso de exemplo (e configuração de exemplo com Spring) aqui: github.com/bwajtr/java-persistence-frameworks-comparison
Břetislav Wajtr
CMobileCom JPA é uma implementação JPA leve para Java e Android. Seu tamanho é de cerca de 380K. É leve e rápido. cmobilecom.com
John

Respostas:

142

O Hibernate requer configuração próxima a zero se você usar anotações. Ele pode até descobrir automaticamente os beans mapeados no caminho de classe! Não vejo nenhuma alternativa para isso do ponto de vista da simplicidade e do poder.

Ele também pode se expor como JPA, que é (IMHO) ainda mais simples.

Vladimir Dyuzhev
fonte
32
próximo a zero não é zero.
njzk2
12
também precisa de muitas bibliotecas externas, tente usá-lo no Android: P
sherif
4
Tentei encontrar uma alternativa mais simples para o Hibernate. Em um projeto pessoal, usei MyBatis (que nome horrível). Foi muito mais trabalhoso do que Hibernate. O Hibernate realmente economiza muito código SQL e ajuda no relacionamento entre pais e filhos. Também examinei alguns ORMs de estilo ActiveRecord para Java. Nenhum parecia maduro ou mais fácil do que o Hibernate. Então, estou voltando para o Hibernate.
devdanke de
56
a pergunta não era sobre uma ALTERNATIVA?
Łukasz Gruner
8
O Hibernate não é uma alternativa leve ao Hiberernate
cosbor11
55

Minha biblioteca ORMLite é uma dessas alternativas. Ele suporta MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB e Sqlite e pode ser facilmente estendido para outros. Ele usa anotações para configurar classes, bom suporte Spring, construtor de consulta flexível, etc.

cinzento
fonte
OrmLite realmente parece promissor! Mas esse projeto ainda está vivo? Nenhuma nova versão por mais de um ano, nenhuma resposta para puxar solicitações / problemas no Github.
Stefan
3
A versão 5.0 foi lançada em junho de 2016.
Lauri Laanti
A versão 5.1 foi lançada em 19/02/2018. Mas não é comparável ao Hibernate e algumas implementações de anotação JPA não funcionam corretamente.
M-Razavi
"comparável ao Hibernate"? Ambos são ORMs, mas de outra forma muito diferentes. Em termos de implementações JPA, pls preencha um relatório de bug se você encontrar algo @ M-Razavi.
Gray
31

Ele ainda requer configuração XML, mas dê uma olhada no MyBatis (antigo iBatis) .

kgiannakakis
fonte
iBatis é muito leve. Você pode definir e controlar mais facilmente seu SQL para mapeamento de objeto.
Berlin Brown
... tem que votar para iBatis, embora lembre-se que não é uma alternativa ORM, uma vez que não está tentando competir com outros como o Hibernate. É um tipo um pouco diferente de animal, mas se encaixa no que você está procurando em termos de peso.
vetor
1
Agora é MyBatis que resta: mybatis.org
Vladislav Rastrusny
3
Acho que o XML em i / MyBatis é realmente uma vantagem, pois mantém consultas complicadas em um formato que pode ser facilmente copiado para um console SQL para teste.
Peter Tillemans
22

O jOOQ vem com um DSL fluente simulando SQL diretamente em Java como um efeito colateral para seus objetivos principais, que são:

  • Geração de código fonte
  • Suporte completo para SQL padrão, incluindo recursos de linguagem SQL, como UNIONs, SELECTs aninhados, todos os tipos de JOINs, aliasing (por exemplo, para self-joins), etc.
  • Amplo suporte para SQL não padrão, incluindo UDTs, procedimentos armazenados, funções específicas do fornecedor, etc.

Leia sobre o jOOQ neste artigo: http://java.dzone.com/announcements/simple-and-intuitive-approach ou visite o site diretamente: http://www.jooq.org

(Isenção de responsabilidade, eu trabalho para a empresa por trás do jOOQ)

Lukas Eder
fonte
3
jOOQ rocks! Implementamos um serviço ETL em grande escala com ele e não poderíamos estar mais felizes. Eu usei o iBATIS, e o jOOQ oferece as mesmas vantagens do SQL de baixo nível sem as resmas de XML e falta de segurança de tipo.
espiado em
3
Esqueci de mencionar um dos melhores recursos do jOOQ: consultas complexas e / ou geradas dinamicamente podem ser montadas de forma controlada e verificadas pelo compilador Java, salvando você de todos aqueles erros de sintaxe ambíguos lançados por bancos de dados e fornecendo regressão em tempo de compilação cobertura para quando o esquema muda sob você.
espiado em
JOOQ é incrível, mas obviamente agora não é gratuito para Oracle e Sybase, então muitas pessoas estão evitando este framework e usando como MyBatis
Makky
@Makky: Obrigado pelo seu feedback. Espero que você esteja mantendo as propostas de valor reais em mente e que não vá mudar para uma estrutura completamente diferente apenas com base no fato de que uma é gratuita e a outra não. O custo de manutenção e migração que isso induziria em seu software é proibitivo e muito além de qualquer licença comercial razoável ...
Lukas Eder
15

Apache Commons DBUtils elimina muito do trabalho pesado repetitivo da programação JDBC. Requer pouca configuração e é fácil de aprender. Não é uma estrutura ORM (da forma que o Hibernate e outras estruturas mencionadas aqui são), mas automatiza o mapeamento de colunas SELECT para campos de membros Java, bem como outras tarefas de programação JDBC repetitivas. Certamente é leve.

Christopher Graziano
fonte
12

Você pode dar uma olhada no Ebean ORM . - Sem sessões - o carregamento lento simplesmente funciona - API mais simples de usar e aprender.

Roubar
fonte
é compatível com SQLite e Android?
endryha
Suporte SQLite foi adicionado. Ainda não experimentei no Android.
Rob Bygrave
9

Cayenne me serviu bem. Relativamente fácil de entender e colocá-lo em funcionamento. Acho a parte da engenharia reversa particularmente charmosa. A configuração pode ser feita com uma GUI.

Benno Richters
fonte
6

Posso propor o apache empire-db. http://incubator.apache.org/empire-db/

Apache Empire-db é um componente de persistência de dados relacionais de código aberto que permite a definição de consulta dinâmica independente do fornecedor do banco de dados, bem como recuperação e atualização de dados simples e segura. Comparado com a maioria das outras soluções, como, por exemplo, Hibernate, TopLink, iBATIS ou implementações JPA, Empire-db tem uma abordagem consideravelmente diferente, com um foco especial na segurança do tempo de compilação , redundâncias reduzidas e produtividade aprimorada do desenvolvedor.

Um exemplo:

// Define the query
DBCommand cmd = db.createCommand();
DBColumnExpr EMPLOYEE_FULLNAME= db.EMPLOYEES.LASTNAME.append(", ")
                        .append(db.EMPLOYEES.FIRSTNAME).as("FULL_NAME");
// Select required columns
cmd.select(db.EMPLOYEES.EMPLOYEE_ID, EMPLOYEE_FULLNAME);
cmd.select(db.EMPLOYEES.GENDER, db.EMPLOYEES.PHONE_NUMBER);
cmd.select(db.DEPARTMENTS.NAME.as("DEPARTMENT"));
cmd.select(db.DEPARTMENTS.BUSINESS_UNIT);
// Set Joins
cmd.join(db.EMPLOYEES.DEPARTMENT_ID, db.DEPARTMENTS.DEPARTMENT_ID);
// Set contraints and order
cmd.where(EMP.LASTNAME.length().isGreaterThan(0));
cmd.orderBy(EMP.LASTNAME);;
Somatik
fonte
2

Posso estar um pouco atrasado para a festa, mas lancei o ActiveJDBC em 2010, que é uma implementação ORM do padrão ActiveRecord, é mais de 10 vezes mais leve do que o Hibernate em dependências, pelo menos duas vezes mais rápido em tempo de execução e requer configuração zero ou anotações.

ipolevoy
fonte
1

Você pode querer dar uma olhada no prevayler (no sourceforge). Uma abordagem um pouco mais leve para persistência. Ou você estava pensando em fazer relatórios contra o DB?

Stephan Eggermont
fonte
1

Se o uso de um banco de dados relacional não for obrigatório, experimente db4o.

Behrang Saeedzadeh
fonte
1

Eu criei sormula como uma alternativa aos ORMs pesados. É compatível com CRUD, amigável para POJO, simples de usar, configurar e entender. O uso de configuração zero é possível. www.sormula.org

Jeff Miller
fonte
-2

Kiteframework também é um framework de orm muito leve. Ele fornece quase todas as operações de db com configurações mínimas.

http://deipakgarg.github.com/Kite-ORM/

Divulgação: Eu sou o autor deste projeto

DeipakGarg
fonte
3
Bem-vindo ao Stack Overflow! Obrigado por postar sua resposta! Por favor, certifique-se de ler o FAQ sobre autopromoção com atenção. Observe também que é necessário que você publique um aviso de isenção de responsabilidade sempre que criar um link para seu próprio site / produto.
Andrew Barber
2
não está em desenvolvimento, nenhum novo lançamento atual do autor, o último lançamento esperado era em 2012.
Barun