JJUGナイトセミナーにて、古くて新しいJava ORMフレームワーク「Reladomo」の紹介をしてきました

ちょっと(かなり!)遅くなりましたが、7月26日のJJUGナイトセミナーで「Reladomo入門」の話をしてきました。 以前JJUG CCC 2017 Springでバイテンポラルデータについてお話ししたのですが、その際に紹介したORMフレームワークがReladomoです。

今回はそのReladomoの入門編で、当日のスライドはこちら。

www.slideshare.net

セッションで紹介した例はこちらのGitHubプロジェクトで公開しています。

github.com

Reladomoはゴールドマン・サックス社が開発し2016年にOSS化したJava ORMフレームワークです。一般に公開されているORMとしては非常に新しい部類に入りますが、実際には同社内では2004年から開発が行われている、枯れた技術になります。

当日は25分という非常に短いセッションだったのですが、前半では駆け足でReladomoの基本的な機能を紹介しました。純粋にORMとしての機能だけをみても、クエリをコード上で型安全に表現でき、高パフォーマンスを期待できる、非常に有用かつ便利なフレームワークです。

  • Reladomoのコード生成
  • Reladomoの検索・挿入・更新・削除処理
  • Reladomoの関連
  • GS Collectionsサポート
  • ユニットテストサポート

また、最後に紹介したバイテンポラルモデルのセクションでは、前回JJUG CCCでは紹介できなかった関連を絡めた例を紹介しました。

  • バイテンポラルモデル

世の中のWebシステムや業務システムにおいて、有効期間や履歴の概念を扱うことは非常に多い中、Reladomoはこれらの概念を自然に扱えるフレームワークとして非常に強力な味方になります。

たとえばPersonPetという1対多の関連を持っているときに、下記のような状態を表現するのは通常のデータモデルでは非常に複雑になりますが、バイテンポラルデータモデルを使うと正しく容易に表現でき、検索することも容易です。

ある日時から別の状態へと遷移する履歴の表現

  • 田中さんは1月1日時点ではペットを飼っていませんでした
  • 田中さんは3月1日から犬のチビを飼い始めました
  • 田中さんはさらに5月1日から猫のサクラを飼い始めました

ある日時における状態の検索

  • 2月1日に田中さんが飼っていたペットの検索(なし)
  • 3月2日に田中さんが飼っていたペットの検索(チビ)
  • 5月2日に田中さんが飼っていたペットの検索(チビ、サクラ)

上記のような例を、スライドではp59 - p70、GitHubのコードではbi-temporalというモジュール内で例示しているので、実際のコードやデータを眺めてバイテンポラルモデルとReladomoの理解を深めていただけると幸いです。

今回のスライドとコードを参考にしてもらうと、Reladomo本家のKata(武道の型もしくは形の意味です)がわりとスムーズにできると思うので、ぜひお試しください!

github.com

そして、このReladomoをScalaで使うお話しをするのが、2017年9月9日に来たるScala関西 Summitでのセッション「Reladomo in Scala」になります。本セッションは、ScalikeJDBCSkinny Framework でおなじみ瀬良さんとの共同セッションになります。興味のある方はぜひお越しの上セッションをご覧いただければと思います!!

f:id:itohiro73:20170903180447p:plain

JJUGナイトセミナーの当日の様子はこちらのTogetterからどうぞ。

togetter.com