2016-09-18 2 views
0

は、私はクラス自体データベースのフィールド名はどこに置かれますか?例えば

public class Book { 
    public static final String TABLE_NAME = "book"; 
    public static final String ID = "id"; 
    public static final String NUM_PAGES = "num_pages"; 

    private long id; 
    private int numPages; 

    public Book(long id, int numPages) { 
     this.id = id; 
     this.numPages = numPages; 
    } 

    //... 

} 

public class DatabaseHelper extends SQLiteOpenHelper { 

    //... 

    public static final query = "select * from " + Book.TABLE_NAME; //for example 

    //... 

} 

またはフィールドがDatabaseHelperの内側に行くべきでSQLフィールド名を入れる必要があります。

public class DatabaseHelper extends SQLiteOpenHelper { 

    public static final String BOOK_TABLE_NAME = "book"; 
    public static final String BOOK_ID = "id"; 
    public static final String BOOK_NUM_PAGES = "num_pages"; 

    //... 

    public static final query = "select * from " + BOOK_TABLE_NAME; //for example 

    //... 

} 

は、主にだけにしようCRUD機能のためにこれらの名前が実際に必要な場所を把握します。

+0

私はSQL文字列を構成する定数を作成しません。ほとんどの場合、それはあなた自身のJPAまたはORMです。時間の無駄です。コードベースにうっとりさせます。たぶん別のXMLなどでSQLの断片を集めるかもしれませんが、定数ではカンマを忘れるリスクはそれ以上では問題ではありません。 _個人的なビュー_ –

答えて

0

どちらのデザインも有効ですが、あなたが好きなものを選んで実行してください。

私は個人的にテーブルの列名が変数名に対応するように私のPOJOをモデル化しようとしますが、そうでない場合は変数を同じPOJOクラスに入れて自己完結型であり、コードベースの一部。

@Entity 
public class Book { 

    public static final String TABLE = "books"; 

    public static final String PAGE_COUNT = "page_count"; 

    //everything else 
} 

@Service 
public class SomeService { 

    public void someMethod() { 
     String query = "SELECT * FROM " + Book.TABLE + " WHERE " + Book.PAGE_COUNT + " < 10"; 
    } 
} 
関連する問題