ActiveObjects(以下、AO)のImplementationアノテーションの意味がわかった!
今朝twitterでつぶやいた内容を、メールで投稿しました。
本文
AOがRubyのActiveRecords(以下、AR)を見本に作られているというのがポイントです。 AOではエンティティはJavaのインタフェースで作られています。それに対し、見本であるARではエンティティはRubyのクラスで作られています。
すると、ARでは(クラスだから)エンティティの中に実装を持つメソッドを持つことができるのですが、AOでは(インタフェースだから)持つことが出来ません。
そこで、AOでは実装のあるメソッドを持つクラスを、エンティティとは別個に作れるようにしています。
(ちなみに、このクラスをAOの作者は、defined implementationと呼んでいるみたい)
この実装クラスとエンティティは、Implementationアノテーションを使って紐づけできます。
このようにして、AOでは(Implementationアノテーションによる)エンティティと実装クラスの組み合わせにより、ARのエンティティに近い機能を実現しているみたいです。
参考
- Implementation(javadoc)https://activeobjects.dev.java.net/api/net/java/ao/Implementation.html
- AO作者の記事のImplementationに関する部分(日本語訳)「An Easier Java ORM(5) Active Recordパターンを実装する」http://d.hatena.ne.jp/nattou_curry_2/20090102/1230903865
- 原文はこちら http://www.javalobby.org/articles/activeobjects