Title: Boiler Plating Database Resource Cleanup
Type: Case study
Duration: 45 min
Speaker: Paul Grenyer
Speaker biography: Paul has been programming in one form or another for over 20 years. After several years using C++ and a brief period using C#, Paul has now ended up somewhere he hoped he'd never be, programming in Java, and finding he really quite likes it. After time in industries such as marking machinery, direct mail, mobile phones, investment banking and Internet TV, Paul is currently working for an exciting new insurance industry based startup in Norwich. He has been an ACCU member since 2001, a regular publications contributor (including the new Desert Island Books column), creator of the mentored developers and a committee member for most of that time. When he's not programming or getting used to married life and being a step parent, Paul thoroughly enjoys science fiction, heavy metal and cycling.
I've been using Java for nearly twelve months now and I am finding that I like it. There are only two things that I have discovered so far that make make me wonder what the creators of Java were thinking: exception handling and layout managers. I'll cover layout managers in a later article.
Java is a garbage collected language. If garbage collection is meant to help you clean up memory, why hasn't something been developed to help objects release resources? Java has finalizers, but as Joshua Bloch points out in Effective Java finalizers cannot be relied upon. Proper cleanup of resources is left to the developer whose only real friend is finally.
In languages like C# the IDisposable interface can be used to aid cleanup. The IDisposable interface has a single method called Dispose. All of an object's cleanup code should be placed in this method and calling the method manually or via using ensures resources are released. The draw back is that even IDisposable requires the client code to to use it. There is nothing like this available in Java, but I have an even better solution which takes away the dependence on a classes user to do any cleaup.
In this presentation I'll look briefly at the vast amount of exception handling code that must be written to cleanly close result set, statement and connection objects when accessing a database and then more in depth at one possible method of boiler plating it.