神刀安全网

Using Stored Procedures With JPA, JDBC… Meh, Just Use jOOQ

The current edition of the Java magazine has an article about Big Data Best Practices for JDBC and JPA by Josh Juneau :

http://www.javamagazine.mozaicreader.com/MayJune2016

The article shows how to use a stored procedure with JDBC (notice how resources aren’t closed, unfortunately. This is commonly forgotten, even in Java Magazine articles)

// 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 result     String returnStr = cs.getString(2); } catch (SQLException ex){     ex.printStackTrace(); }

And with 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();

Specifically the latter was also recently discussed in blog posts by Vlad Mihalcea and Thorben Janssen .

Do you like verbosity and complexity?

No? We neither. This is why we give you a third option instead: Just use jOOQ. Here’s the equivalent jOOQ code:

// JDBC example: String returnStr = Routines.dummyProc(     config, "This is a test");  // JPA example Routines.createEmp(config, "JOSH", "JUNEAU");

Yes! That’s it. Don’t waste time manually configuring your bind variables with JDBC API calls, or JPA annotations . No one likes writing annotations for stored procedures. With jOOQ and jOOQ’s code generator, procedure calls are:

  • A one-liner
  • A no-brainer
  • A way to bring back the fun to stored procedures

Learn more about using Oracle stored procedures with nested collections and object types here:

Painless Access from Java to PL/SQL Procedures with jOOQ

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » Using Stored Procedures With JPA, JDBC… Meh, Just Use jOOQ

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址