Welcome Shin!
If you have a complex project, I would recommend using JPA with
Spring, unless you want to implement your own JPA integration service
layer?!
JPublish integrates very smoothly with Spring; in case you want to
follow that path. Here is an older example of how to use Spring and
Hibernate with JPublish:
http://weblog.flop.ca/2004/06/06/1086553824000.html
A more recent example:
http://jpublish.googlecode.com/svn/trunk/modules/i18n/,
describing another type of Spring-JPublish integration; for supporting
i18n, this time.
For smaller projects I am using Cayenne via a specialized JPublish
module:
http://weblog.flop.ca/2007/10/12/1192245426029.html, and
Cayenne/Spring/JPublish for larger ones.
I had very good experience using Hibernate and iBatis, but I prefer
Cayenne.
V/r
-florin