Well - that's a really interesting question. Certainly JPA could be
scala-fied somehow, but that's not the reason I don't use it any more
(I have nothing against annotations even if they sometimes look a bit
awkward in Scala). The reason I look for other alternatives now is
that JPA pretty much totally relies on mutable state (vars rather than
vals) - the fields are all filled in after initial instance creation.
Squeryl and other options in Scala opt for a more idiomatic immutable
model (although you can make them mutable if you want), so everything
ends up as vals or (often more usefully) lazy vals, even the results
of relationships.

This does take a little getting used to, the "new" way often involves
making a database update through a DSL expression (like a SQL update
statement, which leaves the original object intact and just changes
the data in the database), and then re-querying the object to get it
in its new state, rather than just updating fields and saving the new
object. It's a trade-off I willingly make though for the extra safety
and consistency of handling only immutable instances in my programs.
It ends up being a bit like a database enforced STM. Another advantage
is you can easily disconnect these objects from the database and hold
them as simple in-memory representations, getting a ton of performance
improvement by dropping all of the semaphors for updates, dirty
caches, etc. If you need the most recent version of the object,
requery it and get on with life.

All of this suits databases with lower write and higher read ratios,
but fortunately that's what I tend to work on.

On Jun 15, 7:07 am, Jan Goyvaerts <java.arti...@gmail.com> wrote:
> No problem. We're not getting any younger, are we ? ;-)
>
> If I'm not mistaken it was one of the things about Scala being appreciated
> by Java developers. Because it felt more natural to do this in Scala.
> Something like that anyway. But I'll have to listening again to make sure.
>
> Traits ? Is it enough to add a trait to a class to make it JPA compliant ?
>
>
>
>
>
>
>
> On Wed, Jun 15, 2011 at 15:47, Dick Wall <dickw...@gmail.com> wrote:
> > Gosh - Sorry Jan, I have absolutely no recollection of saying that,
> > can someone give me a hint what my train of thought might have been.
>
> > I don't use JPA in Scala, as much as I liked it in Java. I use
> > Squeryl, sometimes Querulous, and MongoDB whenever I can. I think
> > traits can be a more natural way of mixing in persistence to a class
> > than annotations (perhaps that's what I was thinking), but beyond that
> > I can't imagine what I would have been thinking at the time :-).
>
> > Dick
>
> > On Jun 15, 2:37 am, Jan Goyvaerts <java.arti...@gmail.com> wrote:
> > > In the aforementioned episode Dick talks about Scala being
> > natural/intuitive
> > > for object persistence. I assumed he meant using JPA with case classes.
> > But
> > > did he meant it that way ? In the last week I had various trials with
> > mixed
> > > success. I'd rather have case classes for their advantages but then
> > there's
> > > the tricky formatting of the annotations.
>
> > > Does anybody in here have a working example/doc of these Scala-natural
> > > entities ? (case classes ? all in one file ? etc ...)
>
> > > My biggest frustration : I can't get the 2nd level caching working. I've
> > > done this many times in Java. But Scala code resisted all my attempts so
> > > far. Does anybody in here managed to enable the 2nd level cache ? Please
> > ...
> > > :-P
>
> > > Thanks !
>
> > > Jan
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "The Java Posse" group.
> > To post to this group, send email to javaposse@googlegroups.com.
> > To unsubscribe from this group, send email to
> > javaposse+unsubscr...@googlegroups.com.
> > For more options, visit this group at
> >http://groups.google.com/group/javaposse?hl=en.

-- 
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to javaposse@googlegroups.com.
To unsubscribe from this group, send email to 
javaposse+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en.

Reply via email to