| 開発者 | グレアム・ロシェ |
|---|---|
| 初回リリース | 2005年10月 |
| 安定リリース | 6.1.2 / 2024年1月31日 |
| リポジトリ | Grails リポジトリ |
| 書かれた | グルーヴィー |
| オペレーティング·システム | クロスプラットフォーム |
| プラットフォーム | クロスプラットフォーム( JVM ) |
| タイプ | Web アプリケーション フレームワーク |
| ライセンス | Apache ライセンス2.0 |
| Webサイト | グレイルス |
Grails は、Apache Groovy [1] : 757、§18 プログラミング言語 ( Java プラットフォームをベースとしている) を使用するオープンソースの Web アプリケーション フレームワークです。Grails は、「コーディング ルール」パラダイムに従い、スタンドアロンの開発環境を提供し、開発者から構成の詳細の多くを隠すことで、生産性の高いフレームワークとなることを目指しています。[引用が必要]
Grailsは以前は「Groovy on Rails」として知られていましたが、2006年3月にRuby on Railsフレームワークの創設者であるDavid Heinemeier Hanssonの要請に応じてその名前は廃止されました。[2]作業は2005年7月に開始され、2006年3月29日に0.1がリリースされ、2008年2月18日に1.0のリリースが発表されました。
概要
Grails は、いくつかの目標に対応するために開発されました。
- Java プラットフォーム用の Web フレームワークを提供します。
- HibernateやSpringなどの既存のJavaテクノロジーを単一のインターフェースで再利用する
- 一貫した開発フレームワークを提供します。
- フレームワークの主要部分に関するドキュメントを提供します。
- フレームワークを示すサンプル アプリケーションを提供します。
- Web サーバーやリソースの自動リロードを含む完全な開発モードを提供します。
マーケティング
Grails には、従来の Java Web フレームワークとは異なる 3 つの特性があります。
XML構成なし
Java で Web アプリケーションを作成するには、通常、開発の開始時と開発中に環境とフレームワークを構成する必要があります。この構成は、構成を容易にし、アプリケーション コードに構成を埋め込むことを避けるために、多くの場合 XML ファイルに外部化されます。
XML は当初、アプリケーションの構成に高い一貫性をもたらすため歓迎されていました。しかし、近年、XML は構成には優れているものの、環境の設定が面倒であることが明らかになりました。アプリケーションが成長するにつれて、開発者がフレームワーク構成の理解と維持に時間を費やすため、生産性が低下する可能性があります。XML 構成を使用するアプリケーションで機能を追加または変更すると、変更プロセスに余分な手順が追加され、生産性が低下し、プロセス全体の俊敏性が低下する可能性があります。
Grails では、XML ファイルに構成を追加する必要がありません。代わりに、フレームワークは Grails ベースのアプリケーションのコードを検査する際に、一連のルールまたは規則を使用します。たとえば、 で終わるクラス名Controller(例BookController) は、Web コントローラーと見なされます。
すぐに使える開発環境
従来の Java Web ツールキットを使用する場合、開発ユニットの組み立ては開発者の責任となり、面倒な作業になることがあります。Grails は、開発者がすぐに作業を開始できるように、Web サーバーを含む開発環境を提供します。必要なライブラリはすべて Grails ディストリビューションに含まれており、Grails は自動的に Java Web 環境をデプロイ用に準備します。
ミックスインを通じて利用可能な機能
Grails は、ミックスインを通じて複数のクラスに動的メソッドを備えています。ミックスインは、機能がプログラムにコンパイルされているかのように、クラスに動的に追加されるメソッドです。
これらの動的メソッドにより、開発者はインターフェースを実装したり基本クラスを拡張したりすることなく操作を実行できます。Grailsはクラスのタイプに基づいて動的メソッドを提供します。たとえば、ドメインクラスには、保存、削除、検索などの永続化操作を自動化するメソッドがあります。
ウェブフレームワーク
Grails Web フレームワークは、 MVCパラダイムに従って設計されています。
コントローラー
Grails はコントローラを使用して Web ページの動作を実装します。以下はコントローラの例です。
クラスBookController { def list () { [ books: Book . list () ] } }
上記のコントローラには、データベース内のすべての書籍を含むモデルlistを返すアクションがあります。このコントローラを作成するには、次に示すようにコマンドを使用します。
grails
grails コントローラー作成ブック
このコマンドは、Grails プロジェクトのディレクトリにクラスを作成しますgrails-app/controller。コントローラ クラスを作成するだけで、Grails に認識されるようになります。アクションは開発モードで
listマップされます。http://localhost:8080/book/list
ビュー
Grails はJSPと GSP をサポートしています。以下の例は、上記のコントローラによって準備されたモデル内の書籍をリストする GSP で記述されたビューを示しています。
<html>
<head> <title>私たちの本</title> </head> <body> <ul> <g:each in= "${books}" > <li> ${it.title} (${it.author.name}) </li> </g:each> </ul> </body> </html>
grails-app/views/book/list.gspこのビューは、Grails プロジェクトのとして保存する必要があります。この場所は、BookControllerおよびlistアクションにマップされます。この場所にファイルを配置するだけで、Grails によって認識されるようになります。
GSP タグ リファレンスも利用できます。
動的タグライブラリ
Grailsは、多数のタグライブラリをすぐに使えるように提供しています。[1] : 758-763, §18-2 ただし、独自のタグライブラリ[1] : 792, §18-13 を 簡単に作成して再利用することもできます: [3]
クラスApplicationTagLib { def formatDate = { attrs , body -> out << new java . text . SimpleDateFormat ( attrs . format ). format ( attrs . date ) } }
上記のタグformatDateライブラリは、java.util.Dateオブジェクトを にフォーマットします。このタグ ライブラリは、 ファイルまたはディレクトリ内ので終わるファイルStringに追加する必要があります。
grails-app/taglib/ApplicationTagLib.groovyTagLib.groovygrails-app/taglib
以下は、タグ ライブラリを使用する GSP ファイルからのスニペットですformatDate。
<g:formatDate フォーマット="yyyyMMdd" 日付="${myDate}"/>
GSP で動的タグライブラリを使用するには、インポートタグを使用する必要はありません。動的タグライブラリはJSPファイルでも使用できますが、これには少し手間がかかります。[1] 2010-10-17 にWayback Machineでアーカイブされました。
持続性
モデル
Grails のドメイン モデルは、GORM (Grails Object Relational Mapping) を使用してデータベースに保存されます。ドメイン クラスはディレクトリに保存され、以下に示すコマンド
grails-app/domainを使用して作成できます。grails
grails ドメインクラス作成 ブック
このコマンドはドメイン クラス名を要求し、適切なファイルを作成します。以下にクラスのコードBookを示します。
クラスBook {文字列タイトル人著者}
このクラスを作成するだけで、Grails によって永続的に管理されます。Grails 0.3 では、GORM が改良され、たとえば、id や version プロパティが存在しない場合は、ドメイン クラスにそれら自体が追加されます。id プロパティは、対応するテーブルの主キーとして使用されます。version プロパティは、楽観的ロックに使用されます。
方法
クラスがドメインクラスとして定義され、つまりGORMによって管理されるクラスの場合、クラスのインスタンスの永続化を支援するためにメソッドが動的に追加されます。[2] 2010-10-19にWayback Machineでアーカイブされました。
動的インスタンスメソッド
メソッドsave()はオブジェクトをデータベースに保存します。
def book = new Book ( title: "ダ・ヴィンチ・コード" , author: Author.findByName ( "ダン・ブラウン" ) ) book.save ( )
このdelete()メソッドはデータベースからオブジェクトを削除します。
def book = Book.findByTitle ( "ダ・ヴィンチ・コード" ) book.delete ( )
このrefresh()メソッドは、データベースからオブジェクトの状態を更新します。
def book = Book.findByTitle ( "ダ・ヴィンチ・コード" ) book.refresh ( )
このident()メソッドは、データベースから割り当てられたオブジェクトの ID を取得します。
def book = Book.findByTitle ( "ダ・ヴィンチ・コード" ) def id = book.ident ( )
動的静的(クラス)メソッド
このcount()メソッドは、指定されたクラスのデータベース内のレコード数を返します。
def bookCount = Book.count ( )
このexists()メソッドは、指定された識別子を持つオブジェクトがデータベース内に存在する場合に true を返します。
def bookExists =本が存在する( 1 )
このfind()メソッドは、オブジェクト クエリ ステートメントに基づいて、データベースから最初のオブジェクトを返します。
def book = Book . find ( "Book b から、b.title = ?" 、[ 'ダ・ヴィンチ・コード' ])
クエリ構文は Hibernate HQLであることに注意してください。
このfindAll()メソッドは、データベース内に存在するすべてのオブジェクトを返します。
def books = Book.findAll ( )
このfindAll()メソッドは、オブジェクトのリストを返すオブジェクト クエリ ステートメントを受け取ることもできます。
def books = Book.findAll ( " Bookから" )
メソッドfindBy*()は、特定のパターンに一致するデータベースから最初のオブジェクトを返します。
def book = Book . findByTitle ( "ダ・ヴィンチ・コード" )
また:
def book = Book . findByTitleLike ( "%Da Vinci%" )
メソッドfindAllBy*()は、特定のパターンに一致するデータベースからのオブジェクトのリストを返します。
def books = Book . findAllByTitleLike ( "The%" )
メソッドfindWhere*()は、名前付きパラメータのセットに一致するデータベースからの最初のオブジェクトを返します。
def book = Book .findWhere ( title: 「ダ・ヴィンチ・コード」)
足場
Grails は、CRUD操作 (作成、読み取り、更新、削除)をサポートするためにスキャフォールディングをサポートしています。以下に示すように、スキャフォールディング コントローラーを作成することで、任意のドメイン クラスをスキャフォールディングできます。
クラスBookController {静的scaffold = true }
このクラスを作成することで、 に対して CRUD 操作を実行できますhttp://localhost:8080/book。これは、BookController が Book ドメイン クラスと同じ命名規則に従うため機能します。特定のドメイン クラスをスキャフォールディングするには、scaffold プロパティでクラスを直接参照できます。
クラスSomeController {静的スキャフォールド= Book }
現在、Grails は関連付けのスキャフォールディングを提供していません。
レガシーデータベースモデル
GORM の永続化メカニズムはHibernateを介して実装されています。そのため、標準の Hibernate マッピング ファイルを使用して、レガシー データベースを GORM クラスにマッピングできます。
対象者
Grails の対象ユーザーは次のとおりです。
- Web ベースのアプリケーションを作成するための統合開発環境を探している Java または Groovy 開発者。
- Java の経験がなく、Web ベースのアプリケーションを構築するための生産性の高い環境を求めている開発者。[引用が必要]
Javaプラットフォームとの統合
Grails は Java プラットフォーム上に構築されており、Java プラットフォームの一部であるため、Java ライブラリ、フレームワーク、既存のコード ベースとの統合が非常に簡単です。Grails は、Hibernate ORMフレームワークにマップされたクラスの透過的な統合を提供します。つまり、Hibernate を使用する既存のアプリケーションは、コードを再コンパイルしたり、Hibernate クラスを再構成したりすることなく Grails を使用し、前述の動的永続化メソッドを使用できます。[3] 2011-07-16 にWayback Machineでアーカイブされました。
その結果、Hibernate でマップされた Java クラスに対してスキャフォールディングを構成できるようになりました。また、Grails Web フレームワークの機能がこれらのクラスとそれらを使用するアプリケーションで完全に利用できるようになりました。
Grails はSpring Inversion of Control Frameworkも利用しています。Grails は実際には Spring MVC アプリケーションです。[4] Spring フレームワークを使用すると、追加の Spring Bean をプロビジョニングし、アプリケーションのコンテキストに導入できます。SiteMesh フレームワークはプレゼンテーション層を管理するために使用され、堅牢なテンプレート システムを介してページの開発を簡素化します。[5]
Grailsアプリケーションは、任意のサーブレットコンテナまたはJava EEアプリケーションサーバーにデプロイできるwarアーティファクトとしてパッケージ化されています。[1] :763、§18-2
参照
- Groovy (プログラミング言語)
- ルビー
- Griffon (フレームワーク)、Grails にインスパイアされたデスクトップ フレームワーク
- 春のルー
- ウェブフレームワークの比較
参考文献
- ^ abcd Deinum et al. 2014.
- ^ Rocher, Graeme. 「Groovy on Rails はもう存在しない (ある意味)」。2010 年 5 月 7 日時点のオリジナルよりアーカイブ。
- ^ 7.3 タグライブラリ
- ^ 「Grailsドキュメント」。
- ^ 「Slideshareプレゼンテーション」。2010年11月6日。
- デイナム、マーテン、ルビオ、ダニエル、ロング、ジョシュ、マック、ゲイリー(2014 年 9 月 1 日)。『春のレシピ:問題解決アプローチ』(第 2 版)。Apress。ISBN 978-1-4302-2499-0。
- ブラウン、ジェフ、ロシェ、グレアム(2009年1月15日)『Grailsの決定版ガイド(第2版)』Apress、648ページ、ISBN 978-1-59059-995-2
- スミス、グレン、レドブルック、ピーター(2009年6月28日)、Grails in Action(第1版)、Manning Publications、p. 520、ISBN 978-1-933988-93-1
- アブドゥル・ジャワド、バシャール(2008年12月2日)、Groovy and Grails Recipes(第1版)、Apress、p. 424、ISBN 978-1-4302-1600-1
- フィッシャー、ロバート(2009年4月20日)、Grails Persistence with GORM and GSQL(第1版)、Apress、p. 125、ISBN 978-1-4302-1926-2、2009年12月16日時点のオリジナルよりアーカイブ。2009年10月22日閲覧。
- M. ジャッド、クリストファー、ヌサイラット、ジョセフ ファイサル、シングラー、ジム (2008 年 6 月 18 日)、『Beginning Groovy and Grails: From Novice to Professional (第 1 版)』、Apress、pp. 440、ISBN 978-1-4302-1045-0
- ルドルフ、ジェイソン(2007年2月6日)「Getting Started with Grails(第1版)」、Lulu.com、p. 132、ISBN 978-1-4303-0782-2
外部リンク
- 公式サイト
- Mastering Grails IBMが提供する 18 部構成のオンライン チュートリアル(2008 年から)
書籍
- ロシェ、グレアム・キース (2009)。Grailsの決定版ガイド(第 2 版)。カリフォルニア州バークレー: Apress。ISBN 9781590599952。
- Brown, Jeff; Rocher, Graeme (2013). Grails 2 の決定版ガイド. [ニューヨーク]: Apress. ISBN 9781430243779。
