Hernan Silberman wrote:

--- Hernan Silberman <[EMAIL PROTECTED]> wrote:


Hello,

I'm working on an application that uses "Named Queries" much like the DBUtils QueryLoader class reads in from a Java properties file. The
queries in my application are stored in a relational database on the server side
and I was hoping I could extend QueryLoader so it fetched the NAME/SQL pairs in an


application-specific way, something like this:

public synchronized Map load(DataSource aDS) throws IOException;
public synchronized void unload(DataSource aDS);

I'm new to DBUtils, and figured I'd ask before trying to extend this
class in my code to accomodate something like the two methods above. Is this a sane
thing to do? I won't get exactly what I want by extending this class, because
I don't need the properties file versions of load and unload. Should I just
create an alternate app-specific QueryLoader, or am I not seeing a better way of leveraging the existing QueryLoader class?


QueryLoader isn't used by other DbUtils classes; it's just a standalone
helper class that loads queries from properties files.  So, you won't gain
anything by subclassing it and replacing it with a DB lookup.

David




Thanks for the response. Keeping a registry of named queries seems like a common thing to do and I see lots of utility in having a helper class like QueryLoader to do it with. I was hoping I could easily change QueryLoader's behavior so it would look for it's name/query mapping somewhere other than a properties file, but alas, it's such a simple problem it's no big deal to handle this in my own code with another class.



I have used property files to store queries, but I found it is much more easy to find string in java code than in file, then I need to change query for performance tuning or to fix bug (stack trace can help to find query in code). I use DbUtils fork myself ( http://voruta.sf.net ) and looks like it is better way, but it has the same problems with type and name mapping for java beans.


On another note isn't it risky to return a reference to queryMap below without first wrapping it in Collections.unmodifiableMap( queryMap ) ? I lack trust.

public synchronized Map load(String path) throws IOException {
   Map queryMap = (Map) this.queries.get(path);
   if (queryMap == null) {
       queryMap = this.loadQueries(path);
       this.queries.put(path, queryMap);
   }
   return queryMap;
}

thanks...
hernan


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]







--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to