You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Daniel Jue <te...@gmail.com> on 2007/06/06 19:00:24 UTC

T5 Hibernate and Hibernate Annotations

Hi all,

I am just getting started with Hibernate in my Tap 5 application, and
I'm kind of manually setting up Hibernate using the standard
HibernateUtils static methods and xml files for my domain objects.  It
is working, although it's not elegant.


Now, I thought it would be good to explore this Hibernate-Annotations
[HA] library that is compatible with Hibernate 3.2+.  It seems that
with this lib, I can set up Hibernate as well as set up the entity
objects (although the annotations in the Hibernate docs seem to come
from the javax.persistence.* package which is used for EJB3s), and rid
myself of xml set up files.

Now from the small snippet of code on Tapestry-Hibernate [TH5], I see
that you can do your Hibernate configuration there, and it will also
set up your entities.  However, I don't know the full ambition of this
library--would it replace the need for HA?

Put another way,

If I was using TH5, do I need to have the .hbm.xml files for my
entities, or can I use HA, or is TH5 going to create the HA for me ?

I know this is alpha, an answer based on intended behavior is fine.

Daniel

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: T5 Hibernate and Hibernate Annotations

Posted by Davor Hrg <hr...@gmail.com>.
I have a running app with t5 and HA

if you follow a convention:
your.package.pages - pages
your.package.services - services and AppModule
your.package.entities

without any extra config besides connection data in hibernate.cfg.xml
your entities will be recognized.

you can do this by following the tutorial
http://tapestry.apache.org/tapestry5/t5-tutorial.pdf

and use quickstart archetype (whole comman in one line)
mvn archetype:create ↵
-DarchetypeGroupId=org.apache.tapestry ↵
-DarchetypeArtifactId=quickstart ↵
-DarchetypeVersion=5.0.4 ↵
-DgroupId=org.example ↵
-DartifactId=hilo ↵
-DpackageName=org.example.hilo


if you want to contribute other package do it via:
contributeHibernateSessionSource
since HibernateSessionSource service is responsible
for enumerating entities and adding them to Hconfig.

you can see it in HibernateSessionSourceImpl source

in org.apache.tapestry.hibernate.HibernateModule
you have an example of doing just that:


    /**
     * Contributes the package "&lt;root&gt;.entities" to the configuration,
so that it will be
     * scanned for annotated entity classes.
     */
    public static void
contributeHibernateSessionSource(Configuration<String> configuration,
            ApplicationGlobals globals)
    {
        configuration.add(globals.getApplicationRootPackage() +
".entities");
    }


Davor Hrg

On 6/7/07, Daniel Jue <te...@gmail.com> wrote:
>
> Thanks Davor,
> I got it working, although it seems to require a
>
> myentity.hbm.xml, specified via the hibernate.cfg.xml.
>
> I was hoping I could use the @Entity, @Id, etc, annotations in my
> entity classes instead.  From the Hibernate docs, it seems like
> enabling these "Hibernate Annotations" requires a special
> instantiation of a hibernate session factory, which I am not sure if
> Tapestry-Hibernate does at the moment--I'll have to dive into the
> source when I have time.
>
> In any case, it seems to work without problems.
>
>
>
> On 6/7/07, Davor Hrg <hr...@gmail.com> wrote:
> > HibernateSessionManager being internal means you shouldn't be
> > managing it your self.
> >
> > it's ok to :
> > @Inject private HibernateSessionManager _sessionmanager;
> >
> > but creating it manualy is not a good solution,
> > keep just the inject and tapestry ioc will provide it for you,
> >
> >
> > Davor Hrg
> >
> >
> >
> > On 6/6/07, Daniel Jue <te...@gmail.com> wrote:
> > >
> > > Thanks Davor.
> > >
> > > I think I'm going to use my domain POJOs as the "entities", and they
> > > currently live in the package
> > >
> > > myapp/model/domain
> > >
> > > I think this should be ok, since EJB3 entities are POJOs, from what
> I've
> > > read.
> > >
> > > So I will use that snippet of code to contribute the
> > > myapp/model/domain package, and Tapestry should have it's way with the
> > > pojos there.
> > >
> > > In my page classes I want to do something like this:
> > > @Inject private HibernateSessionManager _sessionmanager;
> > >
> > > (I have a feeling I want the manager instead of just a session.)
> > >
> > > Now, in my AppModule.java, I've added these things:
> > >
> > > public void contributeEntityPackages(Configuration<String>
> configuration)
> > > {
> > >    configuration.add("myapp.model.domain");
> > > }
> > > public HibernateSessionManager buildSessionManager()
> > > {
> > >         return new HibernateSessionManagerImpl(new
> > > HibernateSessionSourceImpl(null, null, null));
> > > }
> > >
> > > Besides the nulls, am I on the right track here, instantiating the
> > > Tapestry Hibernate internal classes (impl classes are in a package
> > > called Internal)?
> > > I am unsure on how to fill in the constructor for
> > > HibernateSessionSourceImpl:
> > >
> > > HibernateSessionSourceImpl(Log log, Collection<String> packageNames,
> > > ClassNameLocator classNameLocator)
> > >
> > > I thought i was specifying the package names in the
> > > contributeEntityPackages method.
> > > For classNameLocator I can just put new classNameLocator().
> > >
> > > Alternatively, should I be creating a HibernateSessionSource through
> > > bind, or is build* the way to go?
> > >
> > > Thanks,
> > >
> > > Daniel
> > >
> > > On 6/6/07, Davor Hrg <hr...@gmail.com> wrote:
> > > > you use HA along with t5,
> > > >
> > > > t5 just supports it naturaly,
> > > > if you put the entities in the entities package t5 will find them
> > > > and add them to config.
> > > > then, all you need is hibernate.cfg.xml containing connection data
> > > >
> > > > I'm leaving office right now so sory for a such short reply..
> > > >
> > > > Davor Hrg
> > > >
> > > > On 6/6/07, Daniel Jue <te...@gmail.com> wrote:
> > > > >
> > > > > Hi all,
> > > > >
> > > > > I am just getting started with Hibernate in my Tap 5 application,
> and
> > > > > I'm kind of manually setting up Hibernate using the standard
> > > > > HibernateUtils static methods and xml files for my domain
> objects.  It
> > > > > is working, although it's not elegant.
> > > > >
> > > > >
> > > > > Now, I thought it would be good to explore this
> Hibernate-Annotations
> > > > > [HA] library that is compatible with Hibernate 3.2+.  It seems
> that
> > > > > with this lib, I can set up Hibernate as well as set up the entity
> > > > > objects (although the annotations in the Hibernate docs seem to
> come
> > > > > from the javax.persistence.* package which is used for EJB3s), and
> rid
> > > > > myself of xml set up files.
> > > > >
> > > > > Now from the small snippet of code on Tapestry-Hibernate [TH5], I
> see
> > > > > that you can do your Hibernate configuration there, and it will
> also
> > > > > set up your entities.  However, I don't know the full ambition of
> this
> > > > > library--would it replace the need for HA?
> > > > >
> > > > > Put another way,
> > > > >
> > > > > If I was using TH5, do I need to have the .hbm.xml files for my
> > > > > entities, or can I use HA, or is TH5 going to create the HA for me
> ?
> > > > >
> > > > > I know this is alpha, an answer based on intended behavior is
> fine.
> > > > >
> > > > > Daniel
> > > > >
> > > > >
> ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> > > > > For additional commands, e-mail: users-help@tapestry.apache.org
> > > > >
> > > > >
> > > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> > > For additional commands, e-mail: users-help@tapestry.apache.org
> > >
> > >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

Re: T5 Hibernate and Hibernate Annotations

Posted by Daniel Jue <te...@gmail.com>.
Thanks Davor,
I got it working, although it seems to require a

myentity.hbm.xml, specified via the hibernate.cfg.xml.

I was hoping I could use the @Entity, @Id, etc, annotations in my
entity classes instead.  From the Hibernate docs, it seems like
enabling these "Hibernate Annotations" requires a special
instantiation of a hibernate session factory, which I am not sure if
Tapestry-Hibernate does at the moment--I'll have to dive into the
source when I have time.

In any case, it seems to work without problems.



On 6/7/07, Davor Hrg <hr...@gmail.com> wrote:
> HibernateSessionManager being internal means you shouldn't be
> managing it your self.
>
> it's ok to :
> @Inject private HibernateSessionManager _sessionmanager;
>
> but creating it manualy is not a good solution,
> keep just the inject and tapestry ioc will provide it for you,
>
>
> Davor Hrg
>
>
>
> On 6/6/07, Daniel Jue <te...@gmail.com> wrote:
> >
> > Thanks Davor.
> >
> > I think I'm going to use my domain POJOs as the "entities", and they
> > currently live in the package
> >
> > myapp/model/domain
> >
> > I think this should be ok, since EJB3 entities are POJOs, from what I've
> > read.
> >
> > So I will use that snippet of code to contribute the
> > myapp/model/domain package, and Tapestry should have it's way with the
> > pojos there.
> >
> > In my page classes I want to do something like this:
> > @Inject private HibernateSessionManager _sessionmanager;
> >
> > (I have a feeling I want the manager instead of just a session.)
> >
> > Now, in my AppModule.java, I've added these things:
> >
> > public void contributeEntityPackages(Configuration<String> configuration)
> > {
> >    configuration.add("myapp.model.domain");
> > }
> > public HibernateSessionManager buildSessionManager()
> > {
> >         return new HibernateSessionManagerImpl(new
> > HibernateSessionSourceImpl(null, null, null));
> > }
> >
> > Besides the nulls, am I on the right track here, instantiating the
> > Tapestry Hibernate internal classes (impl classes are in a package
> > called Internal)?
> > I am unsure on how to fill in the constructor for
> > HibernateSessionSourceImpl:
> >
> > HibernateSessionSourceImpl(Log log, Collection<String> packageNames,
> > ClassNameLocator classNameLocator)
> >
> > I thought i was specifying the package names in the
> > contributeEntityPackages method.
> > For classNameLocator I can just put new classNameLocator().
> >
> > Alternatively, should I be creating a HibernateSessionSource through
> > bind, or is build* the way to go?
> >
> > Thanks,
> >
> > Daniel
> >
> > On 6/6/07, Davor Hrg <hr...@gmail.com> wrote:
> > > you use HA along with t5,
> > >
> > > t5 just supports it naturaly,
> > > if you put the entities in the entities package t5 will find them
> > > and add them to config.
> > > then, all you need is hibernate.cfg.xml containing connection data
> > >
> > > I'm leaving office right now so sory for a such short reply..
> > >
> > > Davor Hrg
> > >
> > > On 6/6/07, Daniel Jue <te...@gmail.com> wrote:
> > > >
> > > > Hi all,
> > > >
> > > > I am just getting started with Hibernate in my Tap 5 application, and
> > > > I'm kind of manually setting up Hibernate using the standard
> > > > HibernateUtils static methods and xml files for my domain objects.  It
> > > > is working, although it's not elegant.
> > > >
> > > >
> > > > Now, I thought it would be good to explore this Hibernate-Annotations
> > > > [HA] library that is compatible with Hibernate 3.2+.  It seems that
> > > > with this lib, I can set up Hibernate as well as set up the entity
> > > > objects (although the annotations in the Hibernate docs seem to come
> > > > from the javax.persistence.* package which is used for EJB3s), and rid
> > > > myself of xml set up files.
> > > >
> > > > Now from the small snippet of code on Tapestry-Hibernate [TH5], I see
> > > > that you can do your Hibernate configuration there, and it will also
> > > > set up your entities.  However, I don't know the full ambition of this
> > > > library--would it replace the need for HA?
> > > >
> > > > Put another way,
> > > >
> > > > If I was using TH5, do I need to have the .hbm.xml files for my
> > > > entities, or can I use HA, or is TH5 going to create the HA for me ?
> > > >
> > > > I know this is alpha, an answer based on intended behavior is fine.
> > > >
> > > > Daniel
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> > > > For additional commands, e-mail: users-help@tapestry.apache.org
> > > >
> > > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> > For additional commands, e-mail: users-help@tapestry.apache.org
> >
> >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: T5 Hibernate and Hibernate Annotations

Posted by Davor Hrg <hr...@gmail.com>.
HibernateSessionManager being internal means you shouldn't be
managing it your self.

it's ok to :
@Inject private HibernateSessionManager _sessionmanager;

but creating it manualy is not a good solution,
keep just the inject and tapestry ioc will provide it for you,


Davor Hrg



On 6/6/07, Daniel Jue <te...@gmail.com> wrote:
>
> Thanks Davor.
>
> I think I'm going to use my domain POJOs as the "entities", and they
> currently live in the package
>
> myapp/model/domain
>
> I think this should be ok, since EJB3 entities are POJOs, from what I've
> read.
>
> So I will use that snippet of code to contribute the
> myapp/model/domain package, and Tapestry should have it's way with the
> pojos there.
>
> In my page classes I want to do something like this:
> @Inject private HibernateSessionManager _sessionmanager;
>
> (I have a feeling I want the manager instead of just a session.)
>
> Now, in my AppModule.java, I've added these things:
>
> public void contributeEntityPackages(Configuration<String> configuration)
> {
>    configuration.add("myapp.model.domain");
> }
> public HibernateSessionManager buildSessionManager()
> {
>         return new HibernateSessionManagerImpl(new
> HibernateSessionSourceImpl(null, null, null));
> }
>
> Besides the nulls, am I on the right track here, instantiating the
> Tapestry Hibernate internal classes (impl classes are in a package
> called Internal)?
> I am unsure on how to fill in the constructor for
> HibernateSessionSourceImpl:
>
> HibernateSessionSourceImpl(Log log, Collection<String> packageNames,
> ClassNameLocator classNameLocator)
>
> I thought i was specifying the package names in the
> contributeEntityPackages method.
> For classNameLocator I can just put new classNameLocator().
>
> Alternatively, should I be creating a HibernateSessionSource through
> bind, or is build* the way to go?
>
> Thanks,
>
> Daniel
>
> On 6/6/07, Davor Hrg <hr...@gmail.com> wrote:
> > you use HA along with t5,
> >
> > t5 just supports it naturaly,
> > if you put the entities in the entities package t5 will find them
> > and add them to config.
> > then, all you need is hibernate.cfg.xml containing connection data
> >
> > I'm leaving office right now so sory for a such short reply..
> >
> > Davor Hrg
> >
> > On 6/6/07, Daniel Jue <te...@gmail.com> wrote:
> > >
> > > Hi all,
> > >
> > > I am just getting started with Hibernate in my Tap 5 application, and
> > > I'm kind of manually setting up Hibernate using the standard
> > > HibernateUtils static methods and xml files for my domain objects.  It
> > > is working, although it's not elegant.
> > >
> > >
> > > Now, I thought it would be good to explore this Hibernate-Annotations
> > > [HA] library that is compatible with Hibernate 3.2+.  It seems that
> > > with this lib, I can set up Hibernate as well as set up the entity
> > > objects (although the annotations in the Hibernate docs seem to come
> > > from the javax.persistence.* package which is used for EJB3s), and rid
> > > myself of xml set up files.
> > >
> > > Now from the small snippet of code on Tapestry-Hibernate [TH5], I see
> > > that you can do your Hibernate configuration there, and it will also
> > > set up your entities.  However, I don't know the full ambition of this
> > > library--would it replace the need for HA?
> > >
> > > Put another way,
> > >
> > > If I was using TH5, do I need to have the .hbm.xml files for my
> > > entities, or can I use HA, or is TH5 going to create the HA for me ?
> > >
> > > I know this is alpha, an answer based on intended behavior is fine.
> > >
> > > Daniel
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> > > For additional commands, e-mail: users-help@tapestry.apache.org
> > >
> > >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

Re: T5 Hibernate and Hibernate Annotations

Posted by Daniel Jue <te...@gmail.com>.
Thanks Davor.

I think I'm going to use my domain POJOs as the "entities", and they
currently live in the package

myapp/model/domain

I think this should be ok, since EJB3 entities are POJOs, from what I've read.

So I will use that snippet of code to contribute the
myapp/model/domain package, and Tapestry should have it's way with the
pojos there.

In my page classes I want to do something like this:
@Inject private HibernateSessionManager _sessionmanager;

(I have a feeling I want the manager instead of just a session.)

Now, in my AppModule.java, I've added these things:

public void contributeEntityPackages(Configuration<String> configuration)
{
   configuration.add("myapp.model.domain");
}
public HibernateSessionManager buildSessionManager()
{
	return new HibernateSessionManagerImpl(new
HibernateSessionSourceImpl(null, null, null));
}

Besides the nulls, am I on the right track here, instantiating the
Tapestry Hibernate internal classes (impl classes are in a package
called Internal)?
I am unsure on how to fill in the constructor for HibernateSessionSourceImpl:

HibernateSessionSourceImpl(Log log, Collection<String> packageNames,
ClassNameLocator classNameLocator)

I thought i was specifying the package names in the
contributeEntityPackages method.
For classNameLocator I can just put new classNameLocator().

Alternatively, should I be creating a HibernateSessionSource through
bind, or is build* the way to go?

Thanks,

Daniel

On 6/6/07, Davor Hrg <hr...@gmail.com> wrote:
> you use HA along with t5,
>
> t5 just supports it naturaly,
> if you put the entities in the entities package t5 will find them
> and add them to config.
> then, all you need is hibernate.cfg.xml containing connection data
>
> I'm leaving office right now so sory for a such short reply..
>
> Davor Hrg
>
> On 6/6/07, Daniel Jue <te...@gmail.com> wrote:
> >
> > Hi all,
> >
> > I am just getting started with Hibernate in my Tap 5 application, and
> > I'm kind of manually setting up Hibernate using the standard
> > HibernateUtils static methods and xml files for my domain objects.  It
> > is working, although it's not elegant.
> >
> >
> > Now, I thought it would be good to explore this Hibernate-Annotations
> > [HA] library that is compatible with Hibernate 3.2+.  It seems that
> > with this lib, I can set up Hibernate as well as set up the entity
> > objects (although the annotations in the Hibernate docs seem to come
> > from the javax.persistence.* package which is used for EJB3s), and rid
> > myself of xml set up files.
> >
> > Now from the small snippet of code on Tapestry-Hibernate [TH5], I see
> > that you can do your Hibernate configuration there, and it will also
> > set up your entities.  However, I don't know the full ambition of this
> > library--would it replace the need for HA?
> >
> > Put another way,
> >
> > If I was using TH5, do I need to have the .hbm.xml files for my
> > entities, or can I use HA, or is TH5 going to create the HA for me ?
> >
> > I know this is alpha, an answer based on intended behavior is fine.
> >
> > Daniel
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> > For additional commands, e-mail: users-help@tapestry.apache.org
> >
> >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: T5 Hibernate and Hibernate Annotations

Posted by Davor Hrg <hr...@gmail.com>.
you use HA along with t5,

t5 just supports it naturaly,
if you put the entities in the entities package t5 will find them
and add them to config.
then, all you need is hibernate.cfg.xml containing connection data

I'm leaving office right now so sory for a such short reply..

Davor Hrg

On 6/6/07, Daniel Jue <te...@gmail.com> wrote:
>
> Hi all,
>
> I am just getting started with Hibernate in my Tap 5 application, and
> I'm kind of manually setting up Hibernate using the standard
> HibernateUtils static methods and xml files for my domain objects.  It
> is working, although it's not elegant.
>
>
> Now, I thought it would be good to explore this Hibernate-Annotations
> [HA] library that is compatible with Hibernate 3.2+.  It seems that
> with this lib, I can set up Hibernate as well as set up the entity
> objects (although the annotations in the Hibernate docs seem to come
> from the javax.persistence.* package which is used for EJB3s), and rid
> myself of xml set up files.
>
> Now from the small snippet of code on Tapestry-Hibernate [TH5], I see
> that you can do your Hibernate configuration there, and it will also
> set up your entities.  However, I don't know the full ambition of this
> library--would it replace the need for HA?
>
> Put another way,
>
> If I was using TH5, do I need to have the .hbm.xml files for my
> entities, or can I use HA, or is TH5 going to create the HA for me ?
>
> I know this is alpha, an answer based on intended behavior is fine.
>
> Daniel
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>