I'm writing an app to deploy to googele app engine, and so I'm using 
JPA. Here are the cons I've encountered:

1) JPA mandates conventions on model class code. In scala this usually 
means any persistent fields are public vars, which is theoretically 
dangerous (and generally frowned upon). I personally have mixed feelings 
on mutability in domain entity classes (Mapper entities are also 
mutable), and there is ongoing discussion on this topic.

2) Collections in JPA are java.util, not scala. This means that you 
can't transform them as you can with the usual higher order functions 
found scala collections (map, filter, etc), unless you use implicit 
conversions (usually via jcl). Implicits make your code feel like scala 
code, but I'm not a fan of having conversions rampant for this, and I 
don't like to explicitly pollute my namespaces by importing jcl.

3) JPA is not monadic. JPA entities are from java land, and in java land 
you represent optional members with null. Idiomatic scala doesn't do 
nulls because they wreak havoc at runtime. Always. Consider an entity 
Person with a member "middleName." In your domain it isn't required, and 
so you allow null at the database level. In a JPA impl you allow this to 
be null, and now everywhere you reference middleName, you absolutely 
must test for null. In scala you use the Option monad, so middleName is 
no longer of type String but Option[String]. NPEs are now effectively 
impossible.

chris

Oscar Picasso wrote:
> I am starting to (re)learn lift and wondering which persistence 
> mechanism I should use: Mapper, Record or JPA?
> 
> It should be ready for for prime time and fit perfectly with the lift / 
> scala way of doing things but still be powerful enough.
> 
>     * I have read that Mapper has some limitations like when dealing
>       with complex object graphs, many to many relationships etc.
>     * I don't know Record but I have two concern with it: is it mature
>       enough? I have read that David is not satisfied with Record
>       especially on the mutability front. What are the practical
>       implications of not having immutability for Record?
>     * JPA: I practice it on a daily base and it's very good but I feel
>       like there is between JPA and lisft / scala. Not that I have
>       thought a lot about it, it's just a feeling. I have also read
>       there are some issues with the Hibernate Validators.
> 
> Could some people on the list be kind enough to summarize the pros and 
> cons of using any of these solutions at this stage?
> 
> --
> 
> You received this message because you are subscribed to the Google 
> Groups "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to 
> liftweb+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/liftweb?hl=.

--

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


Reply via email to