首页 文章

注释免费 spring 数据解决方案

提问于
浏览
2

现在看起来每个人都使用注释来保存数据 .

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 回答

  • 3

    没有基于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注释? (良好的公关潜力;-)

相关问题