现在看起来每个人都使用注释来保存数据。
为什么这是一个问题?
持久性注释特定于所选的持久性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层的情况下解决这个问题?
答案 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的这种约定? (那里有良好的公关潜力; - )