现在看起来每个人都使用注释来保存数据 .
Why is this a problem?
持久性注释特定于所选的持久性API . 如果你使用MySQL,你使用@Entity,如果你使用Couchbase,你必须使用@Document .
在较大的项目中,通常有一个API层,其中一个模型对象 . 此层具有或至少不应具有对任何特定于数据库的依赖性 .
public class User implements IUser {
private String email;
private String id;
private String password;
private String username;
所以不能在这里使用@Document .
数据库/持久层当前只有这个spring-data存储库
public interface IUserRepository extends CrudRepository<IUser, String> {}
和配置类
@Configuration
@EnableCouchbaseRepositories
class CouchbaseConfiguration extends AbstractCouchbaseConfiguration {
我期望找到一个XML基本配置示例,但没有,注释到处都是 .
我怎么解决这个问题?
对象映射是否有基于XML的方法?
如果没有,如何在不污染API层的情况下解决这个问题?
1 回答
没有基于XML的方法 . 如果你需要保持你的API层完全干净,你仍然需要使用一个具体的后备存储并在某个时候选择一种技术......所以这表明你必须在API DTO和Spring Data持续存在之间添加一个层(实体) .
请注意,Spring Data根据商店对数据模型应用不同的约定 . 对于Couchbase,
@Document
注释是 not required ,除非您想要处理到期/ TTL . 也就是说,@Id
注释 is still mandatory (来自SDK或Spring Data Commons,我会在你的情况下推荐)......另请注意,注释是声明 . 如果没有将数据存储用于带注释的类型,它们不会启动任何操作 .
如果遵循所有约定(特别是在实体POJO中将id字段命名为
id
或_id
),Spring Data Mongo似乎没有任何注释进行管理,因此可能会修改Spring Data Couchbase以默认为id的这种约定 . 没有找到id注释? (良好的公关潜力;-)