4

最近では、誰もがアノテーションを使用してデータを保持しているようです。

なぜこれが問題なのですか?
持続性の注釈は、選択した持続性 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 レイヤーを汚染することなくこれをどのように解決できますか?

4

1 に答える 1

3

そのための XML ベースのアプローチはありません。API レイヤーを完全にクリーンに保つ必要がある場合でも、具体的なバッキング ストアを使用し、ある時点でテクノロジーを選択する必要があります。つまり、API DTO と Spring Data が保持するものの間にレイヤーを追加する必要があることを示しています。 (エンティティ)。

Spring Data は、ストアに応じてデータ モデルに異なる規則を適用することに注意してください。Couchbase の場合、有効期限/TTLを処理する場合を除き、@Documentアノテーションは不要です。とはいえ、注釈は依然として必須です(SDKまたはSpring Data Commonsのいずれかから、あなたの場合にお勧めします)...@Id

注釈は宣言であることにも注意してください。注釈付きの型に使用されているデータ ストアがなければ、アクションは開始されません。

idSpring Data Mongo は、すべての規則 (特に、エンティティ POJO のいずれかで名前が付けられている id フィールド) に従う場合、注釈なしで管理するように見えるため、ID がない_id場合、Spring Data Couchbase を変更して、ID のそのような規則をデフォルトにすることができます。注釈が見つかりましたか?(良いPRの可能性があります;-)

于 2016-12-06T17:20:05.113 に答える