You can use Stored Procedures with Hibernate and here's how you do it:
Pseudo code:
Code:
List foos = new ArrayList();
String query = "begin ? :=getFoos(?,?,?); end;";
CallableStatement stmt = null;
ResultSet rs = null;
// Open Hibernate session
Session session = open();
try {
stmt = session.connection().prepareCall(query);
stmt.registerOutParameter(1, OracleTypes.CURSOR);
stmt.setLong(2, someID.longValue());
stmt.setLong(3, anotherID.longValue());
stmt.setString(4, someChar);
stmt.execute();
rs = (ResultSet) stmt.getObject(1);
while (rs.next()) {
foo = new Foo();
foo.setPrimaryID(new Long(rs.getLong(1)));
foo.setFooName(rs.getString(2));
foos .add(foo);
}
}
catch (Exception e) {
// Handle your excpetions here
}
finally {
try {
if (stmt != null) {
stmt.close();
}
if (rs != null) {
rs.close();
}
}
catch (Exception ex) {
//Ignore this exception on purpose.
}
// Close Hibernate session
close();
}