最初に
この記事は初心者がJavaBeansの理解を深めるために書くものです
よくBeanとは倉庫であると言った説明があるのですが、個人的には豆だと思い記述します。
具体的な書き方は書かない、具体的にどう書くかは諸先輩方のほうがよっぽど良い記事があるのでそちらにおまかせします。
なぜBeanなのか?
役割としてはデータをメモリで保管しておくのが目的のクラスです。
よく倉庫みたいなものと言われてます。
しかし本当に倉庫ならRepositoryとかWarehouseとかStockroomとかの名前のほうが良さそうです。
しかし現実としてはBean(豆)です。
名前は読み手に誤解を与えず正確な名前であるべきです。
なぜRepositoryでは無くBeanなのでしょうか?Repositoryのほうがわかりやすそうです。
そこでBeanになる要件に着目します。
Beanの要件とは
- privete修飾子をインスタンス変数につける
- getter setterがある
- コンストラクタはPublicを付与する。
- 引数無しのコンストラクタにしてjava.io.Serializableを実装できるようにする。
では上の4つの要件が豆で説明できるのかを考えてみます。
イメージしてほしいのがさや付きの豆です。
- サヤに入れた豆が出してみたらゴルフボールだったって事なんて起こり得ないですよね。 インスタンス変数にprivete修飾子を付与して外部から勝手にデータを変更させなくする事で実現できそうです。
- さやがクラスで豆がインスタンス変数(データ)です。 豆は当然さやから出し入れできます。 外部からprivete修飾子を付与したgetter setterなんかのアクセッサがそれにあたります
- 豆とサヤなので当然持ち歩く事ができどこででも何もなくても出し入れできるようにしないとダメですね。 コンストラクタはpublic修飾子を付与どこからでも何も無くてもアクセスできるようにします
- 豆は食べたりする以外に、売ったり、大量にある豆を保管したりする必要があります。 つまりデータとしてサーバーに保管するなどネットワーク経由でやり取りしやすい形にできないとダメなのです。 java.io.Serializableを実装してデータのやり取りをし易い形にできるようにする。またSerializableを実装して使用する場合引数無しのコンストラクタが必要になるのでコンストラクタは引数無しが要件に含まれているのです。
今までの話は倉庫でも似たような説明できそうですよね。
でも倉庫だとするとBean自体で長期保管(保存)できるはずです。しかしBeanにはそのような要件はありませんあくまでメモリ上に一時的に保管するにとどまります。
豆だと一時保管はできるかもしれませんがサヤに入れておいて置けば腐るか虫や鳥に食べられていずれなくなります。
豆を保管したければキチンと処理をしてしかる場所に保管する必要があります。
Beanの情報を長期保管して起きたければ同様にキチンと処理をしてサーバーなりファイルなりに保管する必要があります。
つまり倉庫より豆のほうがよりBeanを正確に表しているからBeanだったって事ですね。
余談
Javaの名前の由来はコーヒーから名前が来ていると言う説があります。
じゃあBeanはコーヒー豆?実は遊び心でつけた説も・・・ま、まぁコーヒー豆で説明できそうだし(笑)