Grails > 評価

全般

  • hibernateがネック
    • OutsideSqlなんて ありません。
    • criteriaでそれなりにがんばれる。 xx yen以上の明細を持つヘッダを取得。くらいならできる。はず。
  • hibernateで複雑なアプリケーションを作成している人は、それ用にDB設計しているのだろうか
    • いつも通りのDB設計で持ってきて、SQLならこうすればできるでしょ、と言われてもhibernate的にはできないのですよ。
  • ソースに日本語を書くとコンパイルエラーになる時がある
    • GSPで使うラベルはすべてmessages.propertiesに書く
    • ソースコード上にコメントを書く時はブロックコメントする。 //だとエラーになるケースがあった。
  • スクリプト言語はメンテできるのか?それなりの規模の開発にもたえうるのか
    • 最終的にはjavaにコンパイルされるので、動かしてみないとわからない。ってことはない。
    • とはいえリフレクション等使っているケースでは当然動かしてみないと分からない。
    • defを禁止してすべて型宣言すれば参照検索できるか。

実装

モデルの制約

  • モデルに記入するプロパティへの制約=バリデーション=DBのカラムの制約になる
    • これだと画面ごとに制約が変わるときに対応できない。やはりDTOを作るのがいいと思う。
    • DTOという名前にしても問題ないが、grails的にはcommand objectと言うらしい。
    • 公式:http://grails.org/doc/1.0.x/guide/single.html#6.1.9 Command Objects
  • カラムのデフォルト値がnot nullになっている。ソースコード的にはnull不可だが、DBにはnullが入っているレコードをロードした場合、エラーになる。 not null property reference to null とかなんとか…
    • すべてのカラムのデフォルト値をnull化に共通設定しておいて、個別でnull不可定義をすればいいのでは。と思っている。

Auto Reloading

  • 公式:http://www.grails.org/Auto+Reloading
  • domainクラスがRDBと密接に関係している都合上、domainクラスに修正を入れるとアプリに再起動が入る。
    • dbCreateがupdateでなければ再起動はいらなかったのか…?
  • 型宣言しているとbyNameでDIしてくれない…なんでだし…。
    • @ Resourceを使えば型宣言しているプロパティにもDIできる。

テスト

  • UnitテストでDBアクセスできない。させない方針らしい。
    • できないというのは言い過ぎか、正確にはモックへのアクセスとなる。
  • Unitテストではcriteriaやその他のdbアクセスメソッドに制限がつくので、sqlのテスト等はまともにできないと考えてよいと思う。
最終更新:2011年05月28日 23:46
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。