sql >> データベース >  >> RDS >> Mysql

継承を使用したJPAマッピングビューとテーブル

    viewを指定します すべてのテーブルに対応するビューオブジェクトがある場合、読み取り専用アクセス権を持つモデルオブジェクト内の1対1の関係としてのエンティティ。これは、セッターなしでゲッターを作成するだけで実行できます。任意の種類のセットを起動してから保存すると、失敗したクエリが実行されるためです。このように継承を使用すると、1つのレベルですべての列を指定する必要がなくなり、どの列がどのテーブルまたはビューに属しているかがわかりません。

        Table.java
        package models;
        // relevant imports
        @entity("table")
        public class Table{
            @OneToOne(mappedBy = "table")
            private View view;
            public string getVariable();
            public string setVaraible();
        }
    
        View.java
        package models;
        // relevant imports
        @entity("view")
        public class View{
           @OneToOne
           @JoinColumn(name = "table_id")
           private Table table;
    
           public string getVariable();
           public string getVariable2();
           public string getVariable3();//etc, No setters.
    
           //alternatively use insertable//updateable=false on all column annotation
           @Column(name="variable_4", insertable =  false, updateable=false)
           public string getVariable4();
        }
    

    それらをすべてモデルオブジェクトにまとめると、最初にORMをそこに置くというオブジェクトが無効になります。これは、ORMの基本的なCRUD機能に一致するように大量のmysqlコードを作成する必要があるためです。これはあなたの側の冗長性になります。

    ここで継承を使用しないと、後で継承を使用することを選択した場合に、実際のオプションとして継承が開いたままになります。もちろん、ビューがどれだけうまく書かれているかによっては、毎回ビューに参加するとパフォーマンスが低下する可能性がありますが、すべてを同じオブジェクトに含めないことで、その意味での柔軟性が高まります。




    1. JMeterでmysqlデータベーステーブルにファイルをアップロードすることは可能ですか?

    2. ストアドプロシージャEXECとsp_executesqlの違いは?

    3. SQLの初心者のために複数のルックアップテーブルを処理する方法は?

    4. SQLServer-動的ピボットテーブル-SQLインジェクション