Javaのフレームワーク周りを触っていると、「POJO」という単語は良く耳にすると思います。
「POJO」とは?
「Plain Old Java Objects」の略で、「java.lang.Objectを継承して、それ以外何も継承していない、シンプルなJavaオブジェクト」のことです。
なぜこのような概念が生まれたのか?
Java界隈では2000年代半ばくらいにEJBが昔流行ったのですがEJBは様々なプラットフォームなどと連携することを意識して実装されていて非常な複雑な継承関係などになっておりカスタマイズ性に乏しい作りになっていました。なので近年のStrutsやSpringなどに代表されるフレームワークで見られる動きでシンプルなJavaオブジェクトに継承させた上で作るようにしましょうという感じの流れで生まれた単語になります。深い技術的な意味は正直言えばありません。
EJB
リモートでオブジェクトをやり取りできるフレームワーク。EJBプールという場所にオブジェクトを蓄積して離れた場所からもオブジェクトを取り出すことができる仕組みです。EJBコンテナに登録するオブジェクトは下記のように複雑で決まったルールで記述することが求められます。
- SessionBeanインタフェースを継承して作る。
- EJBコンテナに登録するクラスを扱うクラスはEJBObjectを継承する。
- 作成したインターフェースやクラスなどはejb-jar.xmlに登録して使う。
EJBを扱うプロジェクトは大規模案件が多いのでこれだけ手順が多いとそれだけ作業が増えるので嫌になってきます。(もちろん、EJBはEJBでも進化を遂げており、EJB3以降とかであればこのような手順は簡素化されていたりしますが、やはりEJBという仕組み自体が難解であることは変わりないです。)
SessionBeanやEJBObjectというEJB特有のクラスを継承させられて全く自由度がなくなります。
POJOを実装した例
例えば、Struts等のフレームワークであれば、必ず「Action」というクラスを継承して、アクションクラスを作る必要がありますが、Struts2では、POJOで、Objectを継承するだけのクラスになっています。
なので、Struts2はStruts2以外の外部のライブラリやフレームワークに依存していない純粋なJava仕様に依存した疎結合なフレームワークになっていると言えるのです。
POJOを実装したフレームワーク
- Struts2
- Spring MVC
この記事へのコメントはありません。