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=.