What's the best/easiest way of doing server-side persistence with GWT?

138 views
Skip to first unread message

Navigateur

unread,
May 19, 2010, 6:16:17 PM5/19/10
to Google Web Toolkit
I haven't yet chosen a server or anything.

Is Gilead the best thing for persistence on the server side? Does the
choice of server make a difference for developing for persistence e.g.
AppEngine? GlassFish? Anything?

Sorry, these are relatively beginner questions - in case you say "it
depends on what you're doing" I'm making an app where I want object-
oriented persistence, quick error-free multi-user concurrent access to
that (object-oriented) datastore, and ease-of-development with code
that doesn't tie me down too strongly in case I want to switch
platforms.

Oh, and it should be in Java, like GWT is.
And besides, what are the full range of options for this?

Cheers! N

--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To post to this group, send email to google-we...@googlegroups.com.
To unsubscribe from this group, send email to google-web-tool...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.

Blessed Geek

unread,
May 19, 2010, 7:34:04 PM5/19/10
to Google Web Toolkit
Wouldn't your initial question be like -
What is the best power tool to use to build the fence around my garden
if I wish to plant my garden with tulips.

But later on in your post, you reveal that your question actually has
nothing to do with GWT, just as growing tulips has nothing to do with
choice of power tools for your fence.

Navigateur

unread,
May 20, 2010, 4:54:26 AM5/20/10
to Google Web Toolkit
Ah yes! Except that I want to be able to get persistent things onto my
client side without too much conversion or trouble (i.e. the same
objects client-and-server-side using the same language, and the same
class definitions).

What are my full range of options for this, anyway?
And which is the best one for the purposes I've mentioned?

José González Gómez

unread,
May 20, 2010, 5:08:37 AM5/20/10
to Google Web Toolkit
Although your question has (almost) nothing to do with GWT... we're
working on a GWT + JavaEE application, and evaluated several
alternatives regarding this problem. We had two winners, both of them
using of course JPA with Hibernate provider:

1. Use Gilead to transform your persistent entities and send them to
GWT
2. Use DTOs, and use Dozer to transform from / to domain objects /
entities

In our case we chose DTOs / Dozer over Gilead because we favoured
layer separation, encapsulation and security over development ease.
YMMV

Best regards
José

Navigateur

unread,
May 20, 2010, 9:37:18 AM5/20/10
to Google Web Toolkit
Thanks José! But don't they still require you to do the "hibernate-
mapping" xml thing? Isn't this cumbersome for complex object
structures? Or is there a way of being able to play with your object
structure without having to change the hibernate-mapping xml every
time (i.e. a default automatic behaviour for all objects, which also
updates the data-store to reflect object-structure changes in the
code)?

Thanks!
N

On May 20, 10:08 am, José González Gómez

David Goodenough

unread,
May 20, 2010, 9:48:26 AM5/20/10
to google-we...@googlegroups.com
You could try OpenJPA, which can now largely be done using
annotations rather than xml, or if you are not needing to use SQL
DBs you could try one of the object dbs like db4o.

David
toolkit+u...@googlegroups.com.

José González Gómez

unread,
May 20, 2010, 10:18:11 AM5/20/10
to Google Web Toolkit
JPA/Hibernate supports annotations, so you don't have to fiddle with
xml files any more; and JPA/Hibernate has adopted the "sane defaults"
and "convention over configuration" policy, so unless you want to take
control of your mappings (something you should do if you're doing
anything serious) most of the times it's enough to annotate the
persistent class with the @Entity annotation.

Anyway, if you're handling complex object structures, it's way more
cumbersome to handle persistence by hand, instead of using a ORM
framework. If you want to have automatic update of the database,
Hibernate tools is able to generate the database schema from your
mappings. I suggest to take a look at Maven, Maven Hibernate plugin,
JBoss Tools, and Spring Roo. Haven't worked with the later, but GWT
has just made a coordinated release with Spring Roo and I think it may
be quite interesting for you.

I hope this isn't getting too much OT...

HTH, best regards
José

Navigateur

unread,
May 20, 2010, 11:43:26 AM5/20/10
to Google Web Toolkit
Wow, thanks José and David!

I'm new to "tools" so I'm a bit nervous about using them (although I
probably shouldn't be) whereas db4o offers straightforward code for
persisting objects. Are there any disadvantages to using db4o instead
of ORM with tools? db4o seems intuitavely the best option for me right
now, but could I be wrong? I thank David for bringing it to my
attention, it looks VERY interesting, and under active development,
although the queries are currently reportedly slow, but when that is
fixed, is there a reason why it shouldn't supercede RD and ORD for new
projects?

On May 20, 3:18 pm, José González Gómez

José González Gómez

unread,
May 20, 2010, 12:03:30 PM5/20/10
to Google Web Toolkit
Although you could think they're the perfect solution for persistence
in OO languages, object databases haven't taken off, so if you're
doing anything serious I would be cautious about using them. I don't
know of any big application in production with an OODB. Maybe we're
too used to relational databases...

Take a look at Spring Roo, I think you will like it.

Best regards
José

gengstrand

unread,
May 20, 2010, 12:07:14 PM5/20/10
to Google Web Toolkit
Be advised that Gilead used to be called hibernate4gwt and still
supports only hibernate. Check out the latter half of
http://www.dynamicalsoftware.com/gwt if you want to learn about some
more DTO assemblers used in solving the ORM / GWT-RPC incompatibility
problem.

On May 20, 3:08 am, José González Gómez

Navigateur

unread,
May 21, 2010, 6:57:31 AM5/21/10
to Google Web Toolkit
Thanks José!

Spring Roo looks brilliant! Just one issue, does any of its modules
utilise Gilead or another DTO assembler so that the Hibernate entities
can smoothly go to the GWT client-side?

On May 20, 5:03 pm, José González Gómez

José González Gómez

unread,
May 21, 2010, 8:44:16 AM5/21/10
to Google Web Toolkit
Can't help there, as I haven't tried it yet. Anyway the Spring Roo
tutorial includes generation of persistent classes using JPA and
Hibernate, so I guess it will include some way to get those entities
to GWT, taking into account that is integrated with it

Good luck!!

Manoj

unread,
May 21, 2010, 10:00:07 AM5/21/10
to Google Web Toolkit
I just completed an application on the following stack -> GWT, Spring
and EclipseLink (JPA). From my experience, if you are using GWT 2.x
and using annotations in your persistent classes, there is no need for
Gilead or Dozer. Don't get hung up digging the net as most of the
blogs/articles are outdated (for GWT 1.5 or 1.x)

If you are developing your application as one big project, this is
super easy and everything just works. There is no problem transferring
objects from DAO layer all the way upto java script. (GWT 2.x knows
how to handle it).
But if you want to separate out your server side development you will
have to package those transfer objects along with source as a jar and
add them as gwt module(source is also required for gwt). Mine was a
relatively small application and hence followed the first approach.
But i did try out the second approach and it worked. (A simple build
script will do the
work for you)

Thanks,
Manoj

On May 21, 8:44 am, José González Gómez

Robnauticus-

unread,
May 21, 2010, 10:50:16 AM5/21/10
to Google Web Toolkit
Hello,
I have completed a GWT / Hibernate / gilead / mysql project. It was my
first, the whole process was a large pain but mostly worth it still
compared to DIY.

My newer project is based on GWT / Oracle DB Java edition an object
based db. It has been too easy so far... no translators, just one or
two non intrusive annotations on my Entities and persistent classes.
Plus it can outperform SQL in a lot of aspects. Only thing that sucks
is reporting. Sql is much easier/robost for reporting solutions.
Other than that, unless you were making a large shared database that
has to be separate from the app, I would go without SQL.

Navigateur

unread,
May 21, 2010, 11:19:27 AM5/21/10
to Google Web Toolkit
Manoj, are you saying that Gilead is totally redundant for GWT now?
That the problems mentioned on the Gilead page
(LazyInitializationException, Eager-fetching etc.. ) never occur any
longer? I couldn't find a gwt issue on the tracker that solved this,
but was it ever an issue/needed?
> ...
>
> read more »

Navigateur

unread,
May 21, 2010, 11:21:22 AM5/21/10
to Google Web Toolkit
Robonauticus, which object db are you using? db4o?

Ladislav Gazo

unread,
May 21, 2010, 11:44:31 AM5/21/10
to Google Web Toolkit
And how does GWT handle associations where Hibernate (as JPA
implementation) puts own Collection implementations? They are not
serializable... that is the reason why Gilead exists. Can you tell me
how is it possible to achieve it without such layer?
> ...
>
> ďalšie informácie >>

Manoj

unread,
May 21, 2010, 1:56:34 PM5/21/10
to Google Web Toolkit
There are enhancements in GWT 2.0 to handle enhanced classes
especially the ones related to persistence. Please see the section
"Serializing Enhanced Classes" of
http://code.google.com/webtoolkit/doc/latest/DevGuideServerCommunication.html#DevGuideSerializableTypes

As mentioned in their documentation, there still exists certain
limitations, but see if they are relevant to your application. Also
note that you need to add jpa-annotations-source.jar in gwt classpath.
You can get it from here -> http://code.google.com/p/google-web-toolkit/issues/detail?id=1830

Thanks,
Manoj
> ...
>
> read more »

Navigateur

unread,
May 22, 2010, 9:04:50 AM5/22/10
to Google Web Toolkit
Thanks Manoj!
So I was wondering, is it feasable to use Spring Roo with GWT 2.0.3
(for spring roo to do the persistence bit with e.g. Hibernate?) or is
it necessary to use GWT 2.1 M1?

I'm thinking of doing both Spring Roo Hibernate and db4o versions and
commenting out one to test the performance of the other in turn. I
hope they make a nice Spring Roo module for GWT+db4o if that would
help using db4o as well.

So, do I need to use GWT 2.1 to use Spring Roo?

On May 21, 6:56 pm, Manoj <vkma...@gmail.com> wrote:
> There are enhancements in GWT 2.0 to handle enhanced classes
> especially the ones related to persistence. Please see the section
> "Serializing Enhanced Classes" ofhttp://code.google.com/webtoolkit/doc/latest/DevGuideServerCommunicat...

Robnauticus-

unread,
May 22, 2010, 11:01:44 AM5/22/10
to Google Web Toolkit
I am using "Oracle DB Java Edition"

http://www.oracle.com/database/berkeley-db/je/index.html

HTH,
Rob

Navigateur

unread,
May 23, 2010, 6:28:58 AM5/23/10
to Google Web Toolkit
So is anybody able to tell me if I should get GWT 2.1 M1 before trying
Spring Roo, or should I just use Spring Roo now for Hibernate with GWT
2.0.3? (I've never used Spring Roo).

I'll definitely be making a db4o version alongside this regardless.

Manoj

unread,
May 23, 2010, 4:28:53 PM5/23/10
to Google Web Toolkit
First of all i don't have experience with Spring Roo. The demo during
Google I/O was interesting but I am skeptical about its real life
usage especially in medium to big projects. Check this out ->
http://groups.google.com/group/gwt-platform/browse_thread/thread/862cab91ccb28d40.
I remember seeing a similar demo about Grails 2 years back. So i would
suggest to take a wait and see approach.

Thanks.

On May 23, 6:28 am, Navigateur <naveen.c...@googlemail.com> wrote:
> So is anybody able to tell me if I should getGWT2.1 M1 before trying
> Spring Roo, or should I just use Spring Roo now for Hibernate withGWT
> 2.0.3? (I've never used Spring Roo).
>
> I'll definitely be making a db4o version alongside this regardless.
>
> On May 22, 2:04 pm, Navigateur <naveen.c...@googlemail.com> wrote:
>
> > Thanks Manoj!
> > So I was wondering, is it feasable to use Spring Roo withGWT2.0.3
> > (for spring roo to do thepersistencebit with e.g. Hibernate?) or is
> > it necessary to useGWT2.1 M1?
>
> > I'm thinking of doing both Spring Roo Hibernate and db4o versions and
> > commenting out one to test the performance of the other in turn. I
> > hope they make a nice Spring Roo module forGWT+db4o if that would
> > help using db4o as well.
>
> > So, do I need to useGWT2.1 to use Spring Roo?
>
> > On May 21, 6:56 pm, Manoj <vkma...@gmail.com> wrote:
>
> > > There are enhancements inGWT2.0 to handle enhanced classes
> > > especially the ones related topersistence. Please see the section
> > > "Serializing Enhanced Classes" ofhttp://code.google.com/webtoolkit/doc/latest/DevGuideServerCommunicat...
>
> > > As mentioned in their documentation, there still exists certain
> > > limitations, but see if they are relevant to your application. Also
> > > note that you need to add jpa-annotations-source.jar ingwtclasspath.
> > > You can get it from here ->http://code.google.com/p/google-web-toolkit/issues/detail?id=1830
>
> > > Thanks,
> > > Manoj
>
> > > On May 21, 11:44 am, Ladislav Gazo <ladislav.g...@gmail.com> wrote:
>
> > > > And how doesGWThandle associations where Hibernate (as JPA
> > > > implementation) puts own Collection implementations? They are not
> > > > serializable... that is the reason why Gilead exists. Can you tell me
> > > > how is it possible to achieve it without such layer?
>
> > > > On 21. Máj, 16:00 h., Manoj <vkma...@gmail.com> wrote:
>
> > > > > I just completed an application on the following stack ->GWT, Spring
> > > > > and EclipseLink (JPA). From my experience, if you are usingGWT2.x
> > > > > and using annotations in your persistent classes, there is no need for
> > > > > Gilead or Dozer. Don't get hung up digging the net as most of the
> > > > > blogs/articles are outdated (forGWT1.5 or 1.x)
>
> > > > > If you are developing your application as one big project, this is
> > > > > super easy and everything just works. There is no problem transferring
> > > > > objects from DAO layer all the way upto java script. (GWT2.x knows
> > > > > how to handle it).
> > > > > But if you want to separate out your server side development you will
> > > > > have to package those transfer objects along with source as a jar and
> > > > > add them asgwtmodule(source is also required forgwt). Mine was a
> > > > > relatively small application and hence followed the first approach.
> > > > > But i did try out the second approach and it worked. (A simple build
> > > > > script will do the
> > > > > work for you)
>
> > > > > Thanks,
> > > > > Manoj
>
> > > > > On May 21, 8:44 am, José González Gómez
>
> > > > > <jose.gonzalez.go...@gmail.com> wrote:
> > > > > > Can't help there, as I haven't tried it yet. Anyway the Spring Roo
> > > > > > tutorial includes generation of persistent classes using JPA and
> > > > > > Hibernate, so I guess it will include some way to get those entities
> > > > > > toGWT, taking into account that is integrated with it
> > > > > > > > > > cumbersome to handlepersistenceby hand, instead of using a ORM
> > > > > > > > > > framework. If you want to have automatic update of the database,
> > > > > > > > > > Hibernate tools is able to generate the database schema from your
> > > > > > > > > > mappings. I suggest to take a look at Maven, Maven Hibernate plugin,
> > > > > > > > > > JBoss Tools, and Spring Roo. Haven't worked with the later, butGWT
> > > > > > > > > > has just made a coordinated release with Spring Roo and I think it may
> > > > > > > > > > be quite interesting for you.
>
> > > > > > > > > > I hope this isn't getting too much OT...
>
> > > > > > > > > > HTH, best regards
> > > > > > > > > > José
>
> > > > > > > > > > On 20 mayo, 15:37, Navigateur <naveen.c...@googlemail.com> wrote:
>
> > > > > > > > > > > Thanks José! But don't they still require you to do the "hibernate-
> > > > > > > > > > > mapping" xml thing? Isn't this cumbersome for complex object
> > > > > > > > > > > structures? Or is there a way of being able to play with your object
> > > > > > > > > > > structure without having to change the hibernate-mapping xml every
> > > > > > > > > > > time (i.e. a default automatic behaviour for all objects, which also
> > > > > > > > > > > updates the data-store to reflect object-structure changes in the
> > > > > > > > > > > code)?
>
> > > > > > > > > > > Thanks!
> > > > > > > > > > > N
>
> > > > > > > > > > > On May 20, 10:08 am, José González Gómez
>
> > > > > > > > > > > <jose.gonzalez.go...@gmail.com> wrote:
> > > > > > > > > > > > Although your question has (almost) nothing to do withGWT... we're
> > > > > > > > > > > > working on aGWT+ JavaEE application, and evaluated several
> > > > > > > > > > > > alternatives regarding this problem. We had two winners, both of them
> > > > > > > > > > > > using of course JPA with Hibernate provider:
>
> > > > > > > > > > > > 1. Use Gilead to transform your persistent entities and send them to
> > > > > > > > > > > >GWT
> > > > > > > > > > > > 2. Use DTOs, and use Dozer to transform from / to domain objects /
> > > > > > > > > > > > entities
>
> > > > > > > > > > > > In our case we chose DTOs / Dozer over Gilead because we favoured
> > > > > > > > > > > > layer separation, encapsulation and security over development ease.
> > > > > > > > > > > > YMMV
>
> > > > > > > > > > > > Best regards
> > > > > > > > > > > > José
>
> > > > > > > > > > > > On 20 mayo, 10:54, Navigateur <naveen.c...@googlemail.com> wrote:
>
> > > > > > > > > > > > > Ah yes! Except that I want to be able to get persistent things onto my
> > > > > > > > > > > > > client side without too much conversion or trouble (i.e. the same
> > > > > > > > > > > > > objects client-and-server-side using the same language, and the same
> > > > > > > > > > > > > class definitions).
>
> > > > > > > > > > > > > What are my full range of options for this, anyway?
> > > > > > > > > > > > > And which is the best one for the purposes I've mentioned?
>
> > > > > > > > > > > > > On May 20, 12:34 am, Blessed Geek <blessedg...@gmail.com> wrote:
>
> > > > > > > > > > > > > > Wouldn't  your initial question be like -
> > > > > > > > > > > > > > What is the best power tool to use to build the fence around my garden
> > > > > > > > > > > > > > if I wish to plant my garden with tulips.
>
> > > > > > > > > > > > > > But later on in your post, you reveal that your question actually has
> > > > > > > > > > > > > > nothing to do withGWT, just as growing tulips has nothing to do with
> > > > > > > > > > > > > > choice of power tools for your fence.
>
> > > > > > > > > > > > > > --
> > > > > > > > > > > > > > You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
> > > > > > > > > > > > > > To post to this group, send email to google-we...@googlegroups.com.
> > > > > > > > > > > > > > To unsubscribe from this group, send email to google-web-tool...@googlegroups.com.
> > > > > > > > > > > > > > For more options, visit this group
>

kensai yanesha

unread,
Jun 17, 2010, 9:38:01 AM6/17/10
to Google Web Toolkit
Hi, could you release your GWT mysql project somewhere on the web.
Would be very helpful for me see real complete project of GWT and
database integration. I have to say, that in my case we plan to use
stored procedures only on the db side for access data.

thx.
kensai
Reply all
Reply to author
Forward
0 new messages