Re: Apache JDBC utils
On Monday, April 30, 2012 2:55:51 PM UTC-7, markspace wrote:
Hey all,
I'm making a small website as a personal project using only the JDBC
interface. (No ORM, etc.) Well, I did the CRUD for exactly one bean
That's funny. You say, "No ORM", then immediately describe the ORM library =
you're using.
and found it pretty tedious going. So I started looking around for
Yes, it is. That's why ORM frameworks are popular.
I've done this exercise myself, repeatedly. I've written a handful of proje=
ct-specific ORM layers, used a number of off-the-shelf products, and done d=
irect comparisons between JPA and raw JDBC idioms (with custom ORM) with tw=
o or more idiomatic approach each for the JPA and JDBC styles.
The idiom that won for me was non-monolithic JPA (as opposed to the monolit=
hic idiom I've seen in most shops and was the root of their complaints abou=
t JPA).
It is very light weight, for how I use the term "light weight".
How do you mean the term, precisely?
something light-weight [sic] to help me out. I found the Apache commons=
dbutils project:
<http://commons.apache.org/dbutils/>
This makes reading a bean much much easier. It does most of the column=
to property matching for you and will read an entity into a bean with
only a few lines of code. Here's a (mostly) complete example from my
little project:
public UserBean getByUsername( String name ) {
QueryRunner run = new QueryRunner( dataSource );
BeanHandler<UserBean> handler = new BeanHandler( UserBean.class =
);
UserBean user = null;
try {
user=run.query( sqlStatements.getProperty( LOGIN_BY_USERNAME ),
handler, name );
} catch( SQLException ex ) {
Logger.getLogger( UserDataMapper.class.getName() ).
log( Level.SEVERE, null, ex );
}
return user;
}
That's a lot less 'faffing about' reading the fields of a ResultSet into=
a simple bean, and a much higher signal-to-noise ratio imo.
Yes, that's the advantage of ORMs generally.
I prefer EclipseLink and OpenJPA, myself. They go so far as to abstract awa=
y even that pseudo-SQL, for the common case. You write some annotations and=
Bob's your uncle.
The problem is, this only works for reading a simple entity. There
doesn't seem to be any equivalent for update, create, or delete.
So my question is: does any have experience with dbutils and see's
something I'm missing? Would you take a look at the docs even if you
don't have experience with dbutils?
And: is there a better, light-weight non-ORM package that you might
recommend instead? Something a bit more complete.
How is the one you're using not ORM?
It maps between objects and relational entities. Object-to-relational mappi=
ng. Q.E.D.
Anyway, I'm in the middle of adding basic update and create, and it's
actually going well. (It'd be going better if I weren't some clumsy
with SQL syntax.) But I thought I'd ask to see what other ideas the
folks here on this news group might have.
JPA.
--
Lew