Java杂志的当前版本由Josh Juneau撰写了有关JDBC和JPA的大数据最佳实践的文章: http : //www.javamagazine.mozaicreader.com/MayJune2016
本文介绍了如何在JDBC中使用存储过程(不幸的是,请注意如何关闭资源。即使在Java Magazine的文章中,这也经常被遗忘)
// Using JDBC to call upon a database stored
// procedure
CallableStatement cs = null;
try {cs = conn.prepareCall("{call DUMMY_PROC(?,?)}");cs.setString(1, "This is a test");cs.registerOutParameter(2, Types.VARCHAR);cs.executeQuery();// Do something with resultString returnStr = cs.getString(2);
} catch (SQLException ex){ex.printStackTrace();
}
而使用JPA:
// Utilize JPA to call a database stored procedure
// Add @NamedStoredProcedureQuery to entity class
@NamedStoredProcedureQuery(name="createEmp", procedureName="CREATE_EMP",parameters = {@StoredProcedureParameter(mode= ParameterMode.IN,type=String.class,name="first"),@StoredProcedureParamter(mode = ParameterMode.IN,type=String.class,name="last")})// Calling upon stored procedure
StoredProcedureQuery qry =em.createStoredProcedureQuery("createEmp");
qry.setParameter("first", "JOSH");
qry.setParameter("last","JUNEAU");
qry.execute();
具体地说,最近在Vlad Mihalcea和Thorben Janssen的博客文章中也讨论了后者。
你喜欢冗长和复杂吗?
没有? 我们都没有。 这就是为什么我们给您第三个选择的原因:只需使用jOOQ。 这是等效的jOOQ代码:
// JDBC example:
String returnStr = Routines.dummyProc(config, "This is a test");// JPA example
Routines.createEmp(config, "JOSH", "JUNEAU");
是! 而已。 不要浪费时间用JDBC API调用或JPA 批注手动配置绑定变量。 没有人喜欢为存储过程编写注释。 使用jOOQ和jOOQ的代码生成器,过程调用为:
- 一线
- 轻而易举
- 一种将乐趣带回存储过程的方法
在此处了解有关将Oracle存储过程与嵌套集合和对象类型一起使用的更多信息: 通过jOOQ从Java到PL / SQL过程的无痛访问
翻译自: https://www.javacodegeeks.com/2016/06/using-stored-procedures-jpa-jdbc-meh-just-use-jooq.html