从这个问题开始:
作为我设计的一部分,我打算允许在运行时修改数据库模式的操作。正如上述问题中所讨论的,Cayenne 似乎确实支持这一点。
我对如何在不使用文件系统的情况下将新项目定义提供给 ServerRuntime 很感兴趣。
查看源代码后,我似乎有两个选择:
(1) 实现一个自定义类加载器,将其设置为线程本地类加载器,并允许Cayenne使用ClassLoaderResourceLocator找到它。
(2) 实现一个自定义的ResourceLocator,并使用注入绑定它。
很清楚我将如何做 (1) 但可以说 (2) 有点整洁,因为它不依赖于 ClassLoaderResourceLocator 的行为。
(2) 是否合理,我将如何编码?