I'd like to drastically simplify Cayenne projects:
1. Remove DataNode from the XML. DataNode modeling was an idea from the days of
application servers to bypass JNDI insanity. It allowed a developer to quickly
connect to a DB. The big problem was that DataSources had to be aware of their
environment, so I never used the built in one for instance. There are custom
factories, but if you are to use one, you are better off calling it on your
own. So I'd rather move everything DataNode related to the runtime builder
where it belongs:
CayenneRuntime.builder()
.dataSource(defaultDS)
.dataSource(specialDS, "map1", "map2")
or even
CayenneRuntime.builder()
.dataSource(CayenneDataSource.of("jdbc:...."));
2. No multi-file projects ("cayenne-project.xml" should go away, just leaving
DataMap files). I am still hesitant whether we should support more than one
DataMap per XML (the only reason is cross-DM relationships, but that's a solid
reason). For anything else, Cayenne has project merging facilities for a long
time. So you supply multiple projects on startup:
CayenneRuntime.builder()
.addConfig("p1.xml")
.addConfig("p2.xml")
3. Remove ObjEntity callbacks support from XML. Just use annotations on
entities. This is a runtime feature, not a "mapping" feature.
Thoughts?
Andrus