Ebean is an ORM / Persistence Layer.
This version adds support for enhancement (via javaagent, Ant task and Eclipse IDE Plugin) to the existing Subclass Generation approach Ebean has used.
Inclueded in the download is an updated User Guide that includes a section on Enhancement vs Subclass Generation and Field access vs Property access.
All feedback welcome - thanks.
Thank God. The JEE world has needed an ORM / Persistence Layer for a long time. I'm glad someone finally figured out how to do this!
Thanks Ethan for the kind words ... where do I send the cheque :)
Seriously though, it is nice to get positive feedback and to know that Ebean is helping people.
At first sight I don't see much difference to JPA/Hibernate. OTOH, JPA/Hibernate certainly isn't an optimal solution so I appreciate further investigation.
The fundamental difference between Ebean and JPA/Hibernate is that Ebean is architected to not have a "session object" - aka no object similar to a JPA EntityManager or Hibernate Session.
So with Ebean there is no concept of attached/detached beans, so no merging or flushing etc. IMO this makes Ebean easier to understand and use.
The "sessionless" approach is the major difference which I don't see going away.
A couple of other interesting things is around querying...
Ebean has "Autofetch" support built in (you can get this with Hibernate as well) where the query is automatically tuned for you. IMO most ORM's will include support for Autofetch soon so this difference will disappear I suspect. Autofetch support did require changes deep into Ebean though so I don't know how quickly other ORMs will support this. On the other hand it is such a cool and important feature it is just a matter of time before all ORM's have it built in.
Also the Ebean supports "Partial Object" queries and this is the reason Ebean has not followed JPQL (that is, it's hard to see how JPQL will evolve to support partial object queries similar to Ebean but time will tell on that one). You could say Ebean's query language is simpler focusing on Object graph construction with partial object support (Partial Object support was a high priority for Ebean).
There are a few other features like large query support (per object graph persistence context) but nothing that JPA can not fix in some future version.
Hope that helps...
SimpleORM looks nice and simple and may be a good option for many people. Also I am not that familiar with it, plus I am totally biased towards Ebean :)
So, that said...
The most important difference I would say is that with SimpleORM your "entity beans" have a dependancy on SRecordMeta (a SimpleORM object). Compared to Ebean/JPA where the "entity ebeans" have the JPA annotations but are not dependant on Ebean/Hibernate/Eclipselink/OpenJPA etc.
So in case it is not clear, with Ebean you model your entity beans just like you do in JPA. Ebean uses the same JPA annotations for mapping.
So, the way I see this is that with Ebean (and JPA Vendors) you use either enhancement or subclass generation to support lazy loading and dirty checking etc. SimpleORM does not have a requirement on enhancement or subclass generation because SRecordMeta puts support for those things in there (I assume it supports lazy loading this way as well).
If you are happy enough with SRecordMeta in your entity beans then SimpleORM may well be the right tool for the job... I suspect that this might be a sticking point for some.
The other thing I'd look for is queries that support "fetch joins" (aka find orders join orderDetails etc) which would require the equivalent of a "persistence context" - I didn't see an example on the SimpleORM site but perhaps it does have this. I suspect that this is a feature many people would want.
In the end, if it has enough features to do the job for you then that's cool. At ~130k it is a lot smaller than Ebean which is around 10 times bigger at ~1200k.
If you looking at the more complex side of ORM or large batch processing tasks then i'd say have a look at Ebean's Autofetch, Partial Objects and large query support (QueryListener - per object graph persistence context) to see if they are features you need/like.
I hope that helps and apologies again because I really haven't looked at SimpleORM in depth.