我有一个单用户 java 程序,我想将数据存储在轻量级数据库中,例如 Derby 或 Sqlite。我想在我的程序中使用数据抽象层。Hibernate 似乎需要大量配置,并且对于我需要的东西来说太过分了。什么是 Hibernate 的轻量级替代品?
14 回答
如果您使用注解,Hibernate 需要几乎为零的配置。它甚至可以自动发现类路径中的映射 bean!从简单性和强大的角度来看,我看不到任何替代方案。
它还可以将自己暴露为 JPA,这(恕我直言)甚至更简单。
我的ORMLite库就是这样一种选择。它支持 MySQL、Postgres、Microsoft SQL Server、H2、Derby、HSQLDB 和 Sqlite,并且可以很容易地扩展到其他人。它使用注解来配置类、良好的 Spring 支持、灵活的查询构建器等。
它仍然需要 XML 配置,但请查看MyBatis(以前称为 iBatis)。
jOOQ附带了一个流畅的 DSL,直接在 Java 中模拟 SQL,作为其主要目标的副作用:
- 源代码生成
- 完全支持标准 SQL,包括 SQL 语言功能,如 UNION、嵌套 SELECT、所有类型的 JOIN、别名(例如,自连接)等
- 广泛支持非标准 SQL,包括 UDT、存储过程、供应商特定函数等。
在本文中阅读有关 jOOQ 的信息:http://java.dzone.com/announcements/simple-and-intuitive-approach ,或直接访问网站:http: //www.jooq.org
(免责声明,我在 jOOQ 背后的公司工作)
Apache Commons DBUtils消除了 JDBC 编程中大量重复的繁琐工作。它需要很少的配置并且易于学习。它不是一个 ORM 框架(就像这里提到的 Hibernate 和其他框架那样),但它确实自动将 SELECT 列映射到 Java 成员字段以及其他重复的 JDBC 编程任务。它当然很轻。
你可以看看Ebean ORM。- 没有会话 - 延迟加载正常工作 - 使用和学习更简单的 API。
Cayenne为我提供了很好的服务。相对容易理解和启动和运行。我发现逆向工程部分特别迷人。可以使用 GUI 进行配置。
我可以提出 apache Empire-db。http://incubator.apache.org/empire-db/
Apache Empire-db 是一个开源的关系数据持久化组件,它允许数据库供应商独立的动态查询定义以及安全和简单的数据检索和更新。与大多数其他解决方案(如 Hibernate、TopLink、iBATIS 或 JPA 实现)相比,Empire-db 采用了截然不同的方法,特别关注编译时安全、减少冗余和提高开发人员的生产力。
一个例子:
// 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);;
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
我可能有点晚了,但我在 2010 年发布了ActiveJDBC ,它是 ActiveRecord 模式的 ORM 实现,在依赖项上比 Hibernate 轻 10 倍以上,运行时至少快两倍,并且需要零配置或注释。
您可能想看看 prevayler(在 sourceforge 上)。一种更轻量级的持久性方法。或者您是否正在考虑针对数据库进行报告?
如果不强制使用关系数据库,请尝试使用 db4o。
我创建了sormula作为重量级 ORM 的替代品。它支持 CRUD、POJO 友好、易于使用、配置和理解。零配置使用是可能的。www.sormula.org
Kiteframework 也是非常轻量级的 orm 框架。它以最少的配置提供几乎所有的数据库操作。
http://deipakgarg.github.com/Kite-ORM/
披露:我是这个项目的作者