注释免费弹簧数据解决方案

时间:2016-12-05 21:33:32

标签: java orm spring-data-couchbase

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

为什么这是一个问题?
持久性注释特定于所选的持久性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 个答案:

答案 0 :(得分:3)

没有基于XML的方法。如果你需要保持你的API层完全干净,你仍然需要使用一个具体的后备存储并在某个时候选择一种技术......所以这表明你必须在API DTO和Spring Data持续存在之间添加一个层(实体)。

请注意,Spring Data根据商店对数据模型应用不同的约定。对于Couchbase,@Document注释不需要,除非您要处理 expiry / TTL 。 也就是说,@Id注释仍然是强制性的(来自SDK或Spring Data Commons,我建议你这样做)...

另请注意,注释是声明。如果没有将数据存储用于带注释的类型,他们就不会启动任何操作。

Spring Data Mongo似乎在没有任何注释的情况下进行管理,如果你遵循所有约定(特别是id字段在实体POJO中被命名为id_id),那么Spring Data Couchbase可能是如果没有找到id注释,修改为默认为id的这种约定? (那里有良好的公关潜力; - )