我有一个用户java程序,我希望在轻量级数据库(如Derby或Sqlite)中存储数据。我想在我的程序中使用数据抽象层。 Hibernate似乎需要大量的配置,并且对我所需要的东西来说太过分了。什么是Hibernate的轻量级替代品?
答案 0 :(得分:142)
如果使用注释,Hibernate需要零配置。它甚至可以在类路径中自动发现映射的bean!从简单的和功率的角度来看,我没有看到任何替代方案。
它也可以将自己暴露为JPA,这是(恕我直言)甚至更简单。
答案 1 :(得分:54)
我的ORMLite图书馆就是其中之一。它支持MySQL,Postgres,Microsoft SQL Server,H2,Derby,HSQLDB和Sqlite,并且可以轻松扩展到其他人。它使用注释来配置类,良好的Spring支持,灵活的查询构建器等。
答案 2 :(得分:29)
它仍然需要XML配置,但请查看MyBatis (formerly iBatis)。
答案 3 :(得分:22)
jOOQ附带一个流畅的DSL直接在Java中模拟SQL作为其主要目标的副作用:
在本文中了解jOOQ:http://java.dzone.com/announcements/simple-and-intuitive-approach,或直接访问网站:http://www.jooq.org
(免责声明,我为jOOQ背后的公司工作)
答案 4 :(得分:13)
Apache Commons DBUtils从JDBC编程中汲取了大量重复的重要工作。它需要很少的配置,易于学习。它不是一个ORM框架(就像Hibernate和其他框架所提到的那样),但它确实自动将SELECT列映射到Java成员字段以及其他重复的JDBC编程任务。它确实很轻巧。
答案 5 :(得分:12)
您可以查看Ebean ORM。 - 没有会议 - 延迟加载才有效 - 更简单的API使用和学习。
答案 6 :(得分:9)
Cayenne对我有好处。相对容易理解并使其运行起来。我发现逆向工程部分特别迷人。可以使用GUI完成配置。
答案 7 :(得分:6)
我可以提出apache empire-db。 http://incubator.apache.org/empire-db/
Apache Empire-db是一个开源关系数据持久性组件,它允许数据库供应商独立的动态查询定义以及安全和简单的数据检索和更新。与大多数其他解决方案相比,在Hibernate,TopLink,iBATIS或JPA实现中,Empire-db采用了一种截然不同的方法,特别关注 编译时安全性 ,减少了冗余并提高了开发人员的工作效率。 / p>
一个例子:
// 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);;
答案 8 :(得分:2)
ORMAN框架也不错。 https://github.com/ahmetalpbalkan/orman
文档:https://github.com/ahmetalpbalkan/orman/wiki
比较:https://github.com/ahmetalpbalkan/orman/wiki/Why-orman-is-better-than-other-orms-for-you%3F
答案 9 :(得分:2)
我可能有点迟到了,但我在2010年发布了ActiveJDBC,这是ActiveRecord模式的ORM实现,比依赖中的Hibernate轻10倍以上,至少快两倍于运行时,并且需要零配置或注释。
答案 10 :(得分:1)
您可能想看一下prevayler(在sourceforge上)。一种更轻量级的持久化方法。或者您是否在考虑针对数据库进行报告?
答案 11 :(得分:1)
如果不是必须使用关系数据库,请尝试使用db4o。
答案 12 :(得分:1)
我创建sormula作为重量级ORM的替代品。它支持CRUD,POJO友好,易于使用,配置和理解。零配置使用是可能的。 www.sormula.org
答案 13 :(得分:-2)