Cloud Spanner 向け NHibernate Dialect の一般提供を開始
Google Cloud Japan Team
※この投稿は米国時間 2022 年 10 月 26 日に、Google Cloud blog に投稿されたものの抄訳です。
Cloud Spanner NHibernate Dialect の一般提供を開始
はじめに
NHibernate を使って開発したアプリケーションで、クラウド データベースに移行したいものはありませんか?Google Cloud Spanner が NHibernate Object Relational Mapper に対応するようになりました。既存の NHibernate のコードを Cloud Spanner NHibernate Dialect で再利用することも、既存の知識を活用して新機能を作成することも可能です。
Cloud Spanner NHibernate Dialect で、NHibernate で Cloud Spanner を使うために必要なすべてのクラスやインターフェースを実装できます。以下の方法でプロジェクトに Spanner NHibernate の NuGet パッケージを追加して、Cloud Spanner に接続しましょう。
インストール
以下のように Spanner NHibernate Dialect をインストールします。
接続
以下のように、NHibernate で Cloud Spanner に接続します。
Spanner NHibernate でカスタム接続プロバイダやユーザー提供接続を使用することもできます。詳しくは、こちらの例をご覧ください。
使用方法
Cloud Spanner NHibernate Dialect は、NHibernate の標準機能(NHibernate Criteria API と Linq の両方を使用したデータのクエリ、関連付けの管理、トランザクションの実行など)に対応しています。また、Spanner 特有の機能(インターリーブされたテーブル、ミューテーション、ステイル読み取りなど)にも対応しています。
Linq によるクエリ
NHibernate 3.0 では、NHibernate のプロバイダに Linq が導入されました。Spanner NHibernate Dialect では、最もよく使用される関数と演算子の変換が行われるため、それらを Linq で使用することが可能です。
インターリーブされたテーブル
スキーマで親子関係にインターリーブされたテーブルを使うと、パフォーマンスを向上させることができます。子テーブルを親でインターリーブするということは、子レコードが親と物理的に一緒に保存されるということです。こうした関係をモデル化し、NHibernate で他の関連付けとして使用できます。
このディレクトリには、上記のサンプルで使用したすべてのエンティティの完全なマッピングが含まれています。
ミューテーション
NHibernate は、デフォルトではデータ操作言語(DML)を使用します。NHibernate に指示して、特定の NHibernate セッションを使って実行されたすべてのトランザクションまたは 1 回のトランザクションに、ミューテーションを使用させることができます。
その他のサンプル
GitHub リポジトリには、NHibernate や Cloud Spanner を使用する一般的なユースケース用の複数のサンプルのディレクトリが含まれています。
制限事項
NHibernate でサポートされていない Cloud Spanner の機能は、こちらに一覧化されています。
ご協力のお願い
特に、Cloud Spanner を検討している .NET のデベロッパーや、新規プロジェクトに NHibernate の使用を検討されている Cloud Spanner の既存のお客様からのご意見をお待ちしています。このプロジェクトはオープンソースのため、GitHub でコメント、バグレポート、pull リクエストを行うことができます。