Option #2 is probably the safest. This will allow you to develop your app without any reliance on
EJB containers/etc and your code will not be dealing with bleeding-edge technologies. Since the new Java Persistance is based somewhat on Hibernate, it will be _very_ easy to port your code to option #1 if you decide to and when you feel comfortable with EJB3 containers.
On a side note, if this is a web app, I would _highly_ suggest mixing the following frameworks:
Hibernate (for database persistance)
Spring (for configuration management and transaction management of hibernate -- NOT for web-pages though).
Webwork (for the web side -- this will eventually be
Struts 2, so it is a safe and elegant option).
And
you should also look at using the "displaytag" component for drawing your data-tables.
You can look at "appfuse" for an example of using all of these technologies together -- These tools together are the most powerful stack I've used.
/<