普段SpringDataを使ってMongoDBでホゲホゲしているのですが、 そのコアディベロッパーのOliverGierke(@olivergierke)さんが来日ということで、 日曜の夕方でしたが行ってきました→[ATND]Spring Dataの神髄を語る ちなみに、Oliverさんはドイツで働いている方ですが、 ほぼ丸一日しか東京に滞在しない&次の日インドに行って 講演という感じで、非常に強行軍の中、ありがとうございました。 今回の勉強会は、同時通訳付きということで、ミドルウエアの名前を訳そうと してしまったりとかありましたが、もし、あまりコレ系の技術について 明るくない方だったのであれば、凄いクオリティだったなと思いました。 ■ メモ ・RDBMS&ORマッパー ツリー構造なデータを保存しようとしたらあんまりフィットしないとか。
・MongoDBとかNeo4jの話。 コードで見ると非常に使い方は明快だけど、2つのプロダクトでAPIが結構違う。 統一したインターフェース欲しくね?っていう。 JPAってのがあるけども、ObjectRelationalなMappingにガッツリ。 JPAの説明の最初にもそう書いてある。 MongoDBのある地点から2キロ半とかってのをJPAで扱う? ・SpringDataはどういうアプローチ? 各プロダクトによって一貫性のある感じ。 - KVS: Riak, Redis - Document: MongoDB, CouchDB, - その他: Hadoop, neo4j - もちろんRDMBSも。 Springは多数のDeveloperが馴染みがある。 JDBCやJMSのテンプレートはみんな使ってるよね、と。 機能はだいぶ違うわけだけど、テンプレート使えばわかるはず。 ということで、それ用のアノテーションで〜というアプローチ。 MongoDBだったらDocumentアノテーション。 Neo4JだったらNodeEntityってアノテーション。GraphIdとかRelatedToとか。 もちろんNativeなAPIを叩く口も。execute(ほげほげ、コールバック)的な。 例外とかもちゃんと扱えてナイスな感じで。 ・Repository @Repositoryとかって感じで突っ込んでやって、 ↓こんな感じで自分とこのパッケージを指定してやると、 <jpa:repositories base-package="com.acme.repositories" /> Springがコンポーネントをスキャンしてくれて、 STSがコード補完とか、そんなプロパティ無いとかしてくれる。 ・QueryDsl これならMongoDBだろうがLuceneだろうがなんでもいける。 柔軟にクエリを発行出来る。条件を追加したいとかも。 あんまりちゃんと理解出来なかったけど、コレもRepository同様アツいっぽい。 ・REST exporter リソースをREST形式で。curlとかWebブラウザとかからアクセス出来る。 今風っぽい感じがしますね。 で、まぁ、総じて言うと、↓のSpringData本買って読んでね!って感じですかねw ■ QA ・Cassandraのサポートは? →現時点ではプランは無い。需要があれば。オープンソースなのでやりたければ(ry ・ページネーション用コンポーネントのインターフェースについて →(質問の意図とはちょっとあれだけど)DDD本に沿って実装したよ、と。 こういうコード書く人たちはちゃんと本読んで勉強してるんだなって。
Springは創始者のロッドジョンソンがいなくなっちゃったり、 ↓この辺とかで、VMwareから抜けて、EMS傘下の別会社に〜って事で イロイロと物議を醸しているところですが、これからも頑張って欲しいです。 http://gigaom.com/cloud/remember-that-vmware-spin-off-its-baaa-aack/ http://www.infoq.com/jp/news/2012/12/vmware-spins-out-spring また、この勉強会には↓の著者の方たちもいらっしゃってて、2名の方がプレゼントされてました!