CreamyのModelsは、「EBean」というO/Rマッピングのフレームワークをサポートしています。
エンティティクラス(EBean)を作成した後、アプリケーションにアクセスすると、EBeanがDBテーブルの作成SQLを自動で作成してくれます。
これで、DBテーブル作成の手間が省けます。
また、confフォルダ内の「ebean.properties」が以下のようになっているか、確認してください。
Creamyでは、デフォルトでSQLiteへの設定がしてあります。
datasource.default.username=
datasource.default.password=
datasource.default.databaseUrl=jdbc:sqlite:computer_database.sqlite3
datasource.default.databaseDriver=org.sqlite.JDBC
datasource.default.heartbeatsql=select 1
datasource.default.isolationlevel=read_uncommitted
他のリレーショナルデータベースを利用する場合は、(例えば、PostgreSQL)
datasource.default.username={ユーザー名}
datasource.default.password={パスワード}
datasource.default.databaseUrl=jdbc:postgresql://127.0.0.1:5432/{DB名}
datasource.default.databaseDriver=org.postgresql.Driver
datasource.default.heartbeatsql=select 1
Modelsは、modelsフォルダの下に、データベースのテーブル名の同じクラス名のファイル。
そのテーブル内に含まれる、カラムを実装したクラス変数、と各クラス変数へのsetter,getterを追加します。
CreamyのModelsである「creamy.db.model」を継承してください。
@Entity
@Table(name="company")
public class Company extends Model{
「creamy.db.model」には、基本的なDB操作としてINSERT、UPDATE、DELETEが用意されています。
単純なINSERTなら、そのEBeanオブジェクトのsave()メソッドを呼べば、その状態で保存されます。
UPDATEも、そのEBeanオブジェクトのupdate()メソッドを呼べば、変更した内容で更新されます。
UPDATE同様に対象のオブジェクトのdelete()メソッドを呼べば、そのオブジェクトは削除されます。
Creamyでは、検索を行う「creamy.db.model.Finder」クラスが用意されています。このクラスを使うには、以下のようにFinderオブジェクトを作成します。
Finder<Long, Parent> finder = new Finder<Long, Parent>(Long.class, Parent.class);
ここでのLongクラスはPrimary Keyのクラスを表し、Parentクラスは結果として返すクラスを意味します。下記は、このFinderクラスで提供するメソッドの例です。
また、EBeanで用意されているアノテーションを提供します。
@Entity:このクラスがDBテーブルを表すオブジェクト
@Id:DBテーブルのprimary key
@NotNull:Not Null制約
@CreatedTimestamp:作成時の時間
@Version:更新時の時間