Simply Lift
simply.liftweb.net
simply.liftweb.net
To me this is one of the more important parts of a web framework. Otherwise, they all provide similar features for organizing code: you link some sort of a "view" to some sort of a URL. They may add a template language, or an admin system or a caching framework. They may be event-loop based, or process based or thread based or some mixture of all of the above, but if you have no state, your code will look awesome in all of them. The big issue is "how do you deal with state?"
Persistence IMHO doesn't have to be a very important feature in a framework, since a good one should be able to be pluggable. I use Django, but in some projects I don't use their ORM (or any ORM).
One advantage, I get form helpers that automatically know how to deal with models, display errors, etc.
Supporting this all is non-trivial. "Persistence" usually boils down to serialize, deserialize and transactions... which are ultimately not unique to Lift, so I don't see a huge need to focus on it.
I saw something about guids halfway through the article which scares the pants off of me. Guids are a major part of the evil of Windows programming; the proliferation of opaque identifiers makes it hard to understand what you're looking at. Worse than that, some programmers are tempted to make up their own guids rather than making them the way you're supposed to make them... I eventually quit working at a place where there was this old guy who'd start screaming and turn red because I told him that
var guid=new Guid("0000-...");
was't a guid because it wasn't globally unique.
Guids certainly have a place in distributed systems, but oversized keys can really destroy the performance of a database, quite literally by a factor of 5 or more. They're great for hardware vendors that want to sell you an oversized machine, great for expensive enterprise apps and clunky intranets where you can complain about a page taking 20 seconds to load but but nobody listens, but not acceptable for internet apps that have to compete for time and attention.
For what I'm working on (multiplayer, offline/online web application) persistence has taken the most work to get right. It has to be done at the framework level. An offline web app has to deal with synchronization (backporting of data, client-side data loss or corruption, client-side clock issues, GBs of data per user, multiple users sharing the same data), client-side and server-side migrations (code, data, schema), browser-side database (indexing, memory usage) etc.
Partition-tolerant persistence is almost exactly what I'd want a web app framework (as opposed to web site framework) to be tackling. I'm not aware of any frameworks (including Backbone, Lift, Rails etc.) that do.
http://www.assembla.com/spaces/liftweb/wiki/Mapper http://www.assembla.com/spaces/liftweb/wiki/Persistence_Alte...
Furthermore, this source is intended for educating :-)