Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.glorb.com!news-out.readnews.com!transit4.readnews.com!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail From: Lew Newsgroups: comp.lang.java.programmer Subject: Re: Apache JDBC utils Date: Mon, 30 Apr 2012 18:03:04 -0700 (PDT) Organization: http://groups.google.com Lines: 89 Message-ID: <3265763.6.1335834184189.JavaMail.geo-discussion-forums@pbph1> References: NNTP-Posting-Host: 69.28.149.29 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Trace: posting.google.com 1335835700 22783 127.0.0.1 (1 May 2012 01:28:20 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Tue, 1 May 2012 01:28:20 +0000 (UTC) In-Reply-To: Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=69.28.149.29; posting-account=CP-lKQoAAAAGtB5diOuGlDQk0jIwmH0T User-Agent: G2/1.0 Xref: csiph.com comp.lang.java.programmer:14063 On Monday, April 30, 2012 2:55:51 PM UTC-7, markspace wrote: > Hey all, >=20 > I'm making a small website as a personal project using only the JDBC=20 > interface. (No ORM, etc.) Well, I did the CRUD for exactly one bean=20 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=20 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= =20 > dbutils project: >=20 > >=20 > This makes reading a bean much much easier. It does most of the column= =20 > to property matching for you and will read an entity into a bean with=20 > only a few lines of code. Here's a (mostly) complete example from my=20 > little project: >=20 > public UserBean getByUsername( String name ) { > QueryRunner run =3D new QueryRunner( dataSource ); > BeanHandler handler =3D new BeanHandler( UserBean.class = ); > UserBean user =3D null; > try { > user=3Drun.query( sqlStatements.getProperty( LOGIN_BY_USERNAME ), > handler, name ); > } catch( SQLException ex ) { > Logger.getLogger( UserDataMapper.class.getName() ). > log( Level.SEVERE, null, ex ); > } > return user; > } >=20 >=20 > That's a lot less 'faffing about' reading the fields of a ResultSet into= =20 > 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=20 > doesn't seem to be any equivalent for update, create, or delete. >=20 > So my question is: does any have experience with dbutils and see's=20 > something I'm missing? Would you take a look at the docs even if you=20 > don't have experience with dbutils? >=20 > And: is there a better, light-weight non-ORM package that you might=20 > 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=20 > actually going well. (It'd be going better if I weren't some clumsy=20 > with SQL syntax.) But I thought I'd ask to see what other ideas the=20 > folks here on this news group might have. JPA. --=20 Lew