Da ich einige Fragen haben, die einfach sind, und einige, die spezielle Operationen erfordern, in meinem Projekt verwende ich JDBI Object api mit der Flüssigkeit Syntax gemischt, zusammen mit seinem onDemand Funktionalität wie so:Mit JDBIs OnDemand-Syntax muss ich Handles schließen?
public abstract class MyDAO implements GetHandle {
@SqlQuery("SELECT anInt FROM aTable;")
public abstract int getAnInt();
public List<Integer> insertThings(List<Thing> things) {
Handle h = getHandle();
PreparedBatch batch = h.prepareBatch("INSERT INTO thingsTable (a, b) VALUES (?, ?)");
for (Thing thing : things) {
batch.add(things.getA(), thing.getB());
}
List<Integer> ids = batch.executeAndGenerateKeys(IntegerColumnMapper.WRAPPER).list();
h.close();
return ids;
}
}
//Elsewhere in my code
MyDAO dao = jdbi.onDemand(myDAO.class);
dao.insertThings(things);
So Meine Frage ist, wenn ich JDBI auf diese Weise benutze, muss ich sicherstellen, dass ich meinen Handle schließe, wie ich in dem Beispiel bin, oder kümmert sich das onDemand um das Schließen wie in den abstrakten Methoden?
Das ist, was ich dachte, meine Sorge war nur da, dass ich außerhalb der üblichen Strömung den Griff zu öffnen, dass ich es selbst auch schließen hätte . –