An interesting question came up on stackoverflow on how to dynamically change Cayenne model and DB in a running app. While this feature is unique to Cayenne it is not documented anywhere else. So I figured I'd share the link with my thoughts on it here, as it may be of interest to other Cayenne users:
Until migrations API, cayenne-project and ServerRuntime, implementing something like that wasn't easy at all. Now it seems fairly straightforward, as long as you are content with generic objects.