无注释的弹簧数据解决方案



看起来每个人都在使用注释来持久数据。

为什么这是一个问题?
持久性注释特定于所选的持久性API。如果使用mysql,则使用@entity(如果使用couchbase),则必须使用@document。

在较大的项目中,通常有一个API层在其中建模对象。该层具有或至少不应该具有针对数据库的任何依赖性。

public class User implements IUser {
    private String email;
    private String id;
    private String password;
    private String username;

所以一个人不能在这里使用@document。

当前的数据库/持久性层仅具有此弹簧数据存储库

public interface IUserRepository extends CrudRepository<IUser, String> {}

和配置类

@Configuration
@EnableCouchbaseRepositories
class CouchbaseConfiguration extends AbstractCouchbaseConfiguration {

我希望找到一个XML基本配置示例,但没有任何注释。
我该如何解决这个问题?
是否有基于XML的对象映射的方法?
如果没有,如何在不污染API层的情况下解决?

没有基于XML的方法。如果您需要保持API层完全清洁,您仍然需要使用混凝土备份商店并在某个时候选择一项技术...因此,这表明您必须在API DTOS之间添加层,并且Spring Data仍然存在。(实体)。

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

还请注意,注释是声明。如果没有用于注释类型的数据存储,他们不会发起任何操作。

Spring Data Mongo似乎在没有任何注释的情况下进行管理,如果您遵循所有惯例(尤其是Entity Pojo中的ID字段命名为id_id),因此也许可以将Spring Data Couchbase修改为默认为这样的约定。如果找不到ID注释,则ID?(那里有良好的PR潜力; - )

相关内容

  • 没有找到相关文章

最新更新