JavaBeanとは何ですか。なぜ必要なのですか。クラスとインターフェース構造ですべてのアプリを作成できるので?なぜ豆が必要なのですか?また、クラスやインターフェースの代わりにBeanが不可欠な例をいくつか教えていただけますか?
以下のコンテキストで、Beanの本質を説明してください。
- Wepアプリ
- スタンドアロンアプリ
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のメモリの外部にJavabeanを永続化または転送できるようにする場合に非常に役立ちます。
たとえばDAOクラスでは、それを使用してデータベースのテーブルのデータを格納するユーザーのリストを作成できuser
ます。
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にデータを転送できます。
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でアクセスして、データを表示できます。
<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>
それは意味がありますか?ご覧のとおり、データの保存、転送、およびアクセスにどこでも使用できる規則の一種です。
JavaBeansはどこにでもあり、それらは慣習であり、そこにあるほぼすべてのわずかに大きいライブラリは、それらの慣習を使用して物事を自動化します。JavaBeansを使用する必要があるいくつかの理由:
もちろん、まったく別の問題であり、プレーンなJavaBeansと混合すべきではないEnterprise JavaBeansもあります。名前が似ていて、2つが混同されやすいので、EJBについて言及したかっただけです。
Webアプリのコンテキストで「通常の」JavaBeanを検討する場合、足で靴を履くよりも理にかなっています。サーブレット仕様では、セッションをシリアライズ可能にする必要があるため、シリアライズ可能なものとしてセッションにデータを保存する必要があります。それでは、Beanにしてみてください。SomeBusinessDataBeanをセッションに投入するだけで、問題なく簡単に実行でき、仕様に準拠し、便利です。
また、JavaBeansはアプリケーションの一部を完全に分離するのに役立つため、アプリケーション間でのデータの転送も簡単です。非常に大規模な企業内の文字としてのJavaBeansや部門など、アプリケーションのさまざまなサブシステムを考える: - Dept.AメールDept.Bへのデータの束を、Dept.Bは知らない気さえか -データがちょうどどこから来たのかあるべきであり、ちょうどその手紙を開くことができるので、手紙を読み、そのデータに基づいてそのことを行います。
実際、上記はスタンドアロンアプリにも当てはまります。唯一の違いは、スタンドアロンアプリケーションにはステートフルUI:sがあるため、UIに少し手を加えることができるという点です。 。この違いがあるため、スタンドアロンアプリケーションで混乱させる方が簡単ですが、これは別のトピックに値するものであり、JavaBeansとは直接関係ありません。
豆は本当に何もないです。クラスが「bean」になるために必要なのは、次のものだけです。
これに、特定の状況でフィールドを検出可能にしたい場合(たとえば、そのクラスをオブジェクトのビジュアルエディターからドラッグアンドドロップできるオブジェクトにする場合)、特定の命名規則に準拠するクラスのプロパティのゲッターとセッターを追加できます。 IDEなど)。
詳細については、Sunから直接こちらをご覧ください。
Java Beanは、さまざまな異なる環境で再利用できるように設計されたソフトウェアコンポーネントです。Beanの機能に制限はありません。ドキュメントのスペルチェックなどの単純な機能や、株式ポートフォリオのパフォーマンスの予測などの複雑な機能を実行できます。Beanはエンドユーザーに表示される場合があります。この1つの例は、グラフィカルユーザーインターフェイスのボタンです。Beanはユーザーから見えない場合もあります。マルチメディア情報のストリームをリアルタイムでデコードするソフトウェアは、このタイプのビルディングブロックの例です。最後に、Beanは、ユーザーのワークステーションで自律的に動作するように、または他の一連の分散コンポーネントと連携して動作するように設計できます。データポイントのセットから円グラフを生成するソフトウェアは、ローカルで実行できるBeanの例です。しかしながら、
ソフトウェア開発者がJava Beanとして使用できるようにするために、ソフトウェア開発者がクラスに加えなければならない特定の変更を間もなく確認します。ただし、Java設計者の目標の1つは、このテクノロジーを使いやすくすることでした。したがって、コードの変更は最小限です。
Java Beansの利点
ソフトウェアコンポーネントアーキテクチャは、ソフトウェアビルディングブロックを処理するための標準的なメカニズムを提供します。次のリストは、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コンポーネントの要件ではありません。