JavaBeanとは何ですか。なぜ必要なのですか?クラスとインターフェース構造を持つすべてのアプリを作成できますか?なぜ豆が必要なのですか?また、クラスとインターフェースの代わりにBeanが不可欠な例をいくつか教えてください。
以下のコンテキストでBeanの本質を説明してください。
多くの場合、実際のデータを表します。 Javabeanの簡単な例を次に示します。
public class User implements Java.io.Serializable {
// Properties.
private Long id;
private String name;
private Date birthdate;
// Getters.
public Long getId() { return id; }
public String getName() { return name; }
public Date getBirthdate() { return birthdate; }
// Setters.
public void setId(Long id) { this.id = id; }
public void setName(String name) { this.name = name; }
public void setBirthdate(Date birthdate) { this.birthdate = birthdate; }
// Important Java.lang.Object overrides.
public boolean equals(Object other) {
return (other instanceof User) && (id != null) ? id.equals(((User) other).id) : (other == this);
}
public int hashCode() {
return (id != null) ? (getClass().hashCode() + id.hashCode()) : super.hashCode();
}
public String toString() {
return String.format("User[id=%d,name=%s,birthdate=%d]", id, name, birthdate);
}
}
Serializable
の実装はそれ自体必須ではありませんが、Javaのメモリの外部でJavabeansを永続化または転送できるようにしたい場合、非常に便利です。ハードディスク内またはネットワーク経由。
たとえば、DAOクラスでは、データベース内のuser
テーブルのデータをstoreデータのユーザーリストを作成するために使用できます。 :
List<User> users = new ArrayList<User>();
while (resultSet.next()) {
User user = new User();
user.setId(resultSet.getLong("id"));
user.setName(resultSet.getString("name"));
user.setBirthdate(resultSet.getDate("birthdate"));
users.add(user);
}
return users;
たとえば、サーブレットクラスでは、データベースからUIにデータをtransferするために使用できます。
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
List<User> users = userDAO.list();
request.setAttribute("users", users);
request.getRequestDispatcher("users.jsp").forward(request, response);
}
たとえば、JSPページでは、JavaBeanの規則に従ってデータを表示するために EL でaccessアクセスできます。 :
<table>
<tr>
<th>ID</th>
<th>Name</th>
<th>Birthdate</th>
</tr>
<c:forEach items="${users}" var="user">
<tr>
<td>${user.id}</td>
<td><c:out value="${user.name}" /></td>
<td><fmt:formatDate value="${user.birthdate}" pattern="yyyy-MM-dd" /></td>
</tr>
</c:forEach>
</table>
理にかなっていますか?ご覧のとおり、これはconventionのようなもので、どこでもstore、transferおよびaccessデータ。
JavaBeans はどこにでもあり、規則であり、そこにあるほぼすべてのわずかに大きなライブラリは、それらの規則を使用して物事を自動化します。 JavaBeansを使用する理由はいくつかあります。
もちろん、 Enterprise JavaBeans もあります。これはまったく別の問題であり、プレーンなJavaBeansと混同しないでください。名前が似ており、これら2つを混同するのは簡単だからです。
Webアプリのコンテキストで「通常の」JavaBeansを検討する場合、足に靴を履くよりも理にかなっています。サーブレット仕様では、セッションをシリアル化できる必要があるため、セッション内のデータをシリアル化可能なものとして保存する必要があります。その場合、Beanにしないでください。 SomeBusinessDataBeanをセッションに投入するだけで、すぐに使用できます。
また、JavaBeansはアプリケーションの一部を完全に分離するのに役立つため、そのデータをアプリケーション間で転送することも簡単です。 JavaBeansは文字であり、アプリケーションのさまざまなサブシステムは非常に大規模な企業内の部門であると考えてください。Dept.AはDept.Bに大量のデータをメールしますが、Dept.Bは-またはさらにケア-データが本来あるべき場所から来て、レターを開き、そこから何かを読み、そのデータに基づいてそのことを行うことができます。
実際、上記の内容はスタンドアロンアプリにも適用されますが、唯一の違いは、スタンドアロンアプリケーションにはステートフルUIがあるため、UIをもう少し混乱させることができることです。一方、WebアプリケーションにはステートフルUIがあります。 。この違いのため、スタンドアロンアプリケーションを混乱させるのは簡単ですが、それはまったく別のトピックの価値があり、JavaBeansとは直接関係していません。
豆は本当に大したものではありません。クラスが「bean」になるために必要なのは次のとおりです。
特定の状況でフィールドを検出できるようにする場合は、特定の命名規則に準拠するクラスのプロパティのゲッターとセッターを追加できます(たとえば、そのクラスをオブジェクトのビジュアルエディターからドラッグアンドドロップできるようにする) IDEなど)。
詳細はSun here から直接見つけることができます。
Java Beanは、さまざまな異なる環境で再利用できるように設計されたソフトウェアコンポーネントです。 Beanの機能に制限はありません。ドキュメントのスペルのチェックなどの単純な機能、または株式ポートフォリオのパフォーマンスの予測などの複雑な機能を実行できます。 Beanはエンドユーザーに表示される場合があります。この一例は、グラフィカルユーザーインターフェイスのボタンです。 Beanはユーザーには見えない場合もあります。マルチメディア情報のストリームをリアルタイムでデコードするソフトウェアは、このタイプのビルディングブロックの例です。最後に、Beanは、ユーザーのワークステーションで自律的に動作するように、または他の一連の分散コンポーネントと連携して動作するように設計できます。データポイントのセットから円グラフを生成するソフトウェアは、ローカルで実行できるBeanの例です。ただし、株式取引所または商品取引所からリアルタイムの価格情報を提供するBeanは、他の分散ソフトウェアと協力してデータを取得する必要があります。
Java Beanとして使用できるように、ソフトウェア開発者がクラスにどのような変更を加えなければならないかをすぐに確認します。ただし、Javaデザイナーの目標の1つは、このテクノロジーを簡単に使用できるようにすることでした。したがって、コードの変更は最小限です。
Java Beanの利点
ソフトウェアコンポーネントアーキテクチャは、ソフトウェアビルディングブロックを処理する標準メカニズムを提供します。次のリストは、Javaテクノロジーがコンポーネント開発者に提供する特定の利点の一部を列挙しています。
Javabeanの簡単な例:
public class MyBean implements Java.io.Serializable
{
protected int theValue;
public MyBean()
{
}
public void setMyValue(int newValue)
{
theValue = newValue;
}
public int getMyValue()
{
return theValue;
}
}
これは、JavaBeans永続化メカニズムによって自動的に保存および復元される状態(変数theValue)を持つMyBeanという名前の実際のBeanであり、ビジュアルプログラミング環境で使用できるMyValueという名前のプロパティがあります。このBeanには視覚的な表現はありませんが、JavaBeanコンポーネントの要件ではありません。