Vla*_*hev 142
如果使用注释,Hibernate需要零配置.它甚至可以在类路径中自动发现映射的bean!从简单性和功率的角度来看,我没有看到任何替代方案.
它也可以将自己暴露为JPA,这是(恕我直言)甚至更简单.
kgi*_*kis 31
它仍然需要XML配置,但看看MyBatis(以前的iBatis).
Luk*_*der 22
jOOQ附带了一个流畅的DSL,直接在Java中模拟SQL作为其主要目标的副作用:
请阅读本文中的jOOQ:http://java.dzone.com/announcements/simple-and-intuitive-approach ,或直接访问网站:http://www.jooq.org
(免责声明,我为jOOQ背后的公司工作)
Chr*_*ano 14
Apache Commons DBUtils从JDBC编程中获取了大量重复的gruntwork.它需要很少的配置,易于学习.它不是一个ORM框架(就像Hibernate和其他框架所提到的那样),但它确实自动将SELECT列映射到Java成员字段以及其他重复的JDBC编程任务.它确实很轻巧.
我可以提出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);;
Run Code Online (Sandbox Code Playgroud)