我有一个用户Java程序,希望将数据存储在轻量级数据库(例如Derby或Sqlite)中。我想在程序中使用数据抽象层。Hibernate似乎需要大量配置,并且对于我所需要的东西来说过于矫kill过正。什么是Hibernate的轻巧替代品?
我有一个用户Java程序,希望将数据存储在轻量级数据库(例如Derby或Sqlite)中。我想在程序中使用数据抽象层。Hibernate似乎需要大量配置,并且对于我所需要的东西来说过于矫kill过正。什么是Hibernate的轻巧替代品?
Answers:
如果您使用注释,则Hibernate要求零配置旁边。它甚至可以在类路径中自动发现映射的bean!从这两个简单性来看,我看不到任何替代方案和功能的角度来看,。
它还可以将自己公开为JPA,这是(IMHO)甚至更简单的方法。
我的ORMLite库就是这样一种选择。它支持MySQL,Postgres,Microsoft SQL Server,H2,Derby,HSQLDB和Sqlite,并且可以轻松扩展到其他应用程序。它使用注释来配置类,良好的Spring支持,灵活的查询生成器等。
它仍然需要XML配置,但请看一下MyBatis(以前的iBatis)。
jOOQ附带了流利的DSL,可以直接用Java模拟SQL,这是其主要目标的副作用:
在本文中阅读有关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更加简单。
我可以建议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);;
我参加聚会可能有点晚,但是我 在2010年发布了ActiveJDBC,它是ActiveRecord模式的ORM实现,在依赖项方面比Hibernate轻10倍以上,在运行时至少快两倍,并且需要零配置或注释。
如果不是必须使用关系数据库,请尝试db4o。
我创建了sormula,以替代重量级ORM。它支持CRUD,对POJO友好,易于使用,配置和理解。零配置使用是可能的。www.sormula.org