Tempat di mana JavaBeans digunakan?

172

Apa itu JavaBean dan mengapa saya membutuhkannya? Karena saya dapat membuat semua aplikasi dengan struktur kelas dan antarmuka? Kenapa saya butuh kacang? Dan bisakah Anda memberi saya beberapa contoh di mana kacang lebih penting daripada kelas dan antarmuka?

Tolong jelaskan esensi kacang dalam konteks di bawah ini:

  • Wap aplikasi
  • Aplikasi mandiri
Sidharth
sumber
10
Saya harap Anda tidak bingung antara "Java beans" dan "Enterprise Java Beans atau EJBs".
Rahul
53
sebenarnya saya tidak tahu tentang kacang itu sendiri lalu bagaimana saya bisa bingung dengan EJB .. adakah yang istimewa dengan itu ..
Sidharth

Jawaban:

178

Mereka sering hanya mewakili data dunia nyata. Berikut adalah contoh sederhana dari bahasa Jawa:

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);
    }
}

Implementasi Serializabletidak wajib, tetapi sangat berguna jika Anda ingin dapat bertahan atau mentransfer bahasa Jawa di luar memori Java, misalnya dalam harddisk atau melalui jaringan.

Misalnya, kelas DAO Anda dapat menggunakannya untuk membuat daftar pengguna tempat Anda menyimpan data usertabel dalam database:

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;

Sebagai contoh, kelas Servlet Anda dapat menggunakannya untuk mentransfer data dari database ke UI:

protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    List<User> users = userDAO.list();
    request.setAttribute("users", users);
    request.getRequestDispatcher("users.jsp").forward(request, response);
}

Misalnya, halaman JSP Anda dapat mengaksesnya dengan EL , yang mengikuti konvensi Javabean, untuk menampilkan data:

<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>

Apakah masuk akal? Anda lihat, itu semacam konvensi yang dapat Anda gunakan di mana saja untuk menyimpan , mentransfer , dan mengakses data.

Lihat juga:

BalusC
sumber
11
Penjelasan yang bagus, dan biasanya terima kasih untuk Implementasi Serializable ini tidak wajib, tetapi sangat berguna jika Anda ingin dapat bertahan atau mentransfer bahasa Jawa di luar memori Jawa, misalnya dalam harddisk atau melalui jaringan.
agpt
tetapi dalam java doc disebutkan bahwa kita harus Menerapkan Serialisasi sehingga bisakah Anda menjelaskannya?
SSP
8
@SSP: 1) tidak ada javadoc. 2) "harus"! = "Harus".
BalusC
61

Kacang itu sendiri

JavaBeans ada di mana-mana, mereka adalah konvensi dan hampir setiap perpustakaan yang sedikit lebih besar di luar sana menggunakan konvensi tersebut untuk mengotomatisasi hal-hal. Hanya beberapa alasan mengapa JavaBeans harus digunakan:

  • Mereka bersambung dengan baik.
  • Dapat dipakai menggunakan refleksi.
  • Kalau tidak, dapat dikendalikan menggunakan refleksi sangat mudah.
  • Baik untuk merangkum data aktual dari kode bisnis.
  • Konvensi umum berarti siapa pun dapat menggunakan kacang Anda DAN ANDA DAPAT MENGGUNAKAN Kacang SEMUA ORANG LAIN tanpa dokumentasi / manual apa pun dengan mudah dan konsisten.
  • Sangat dekat dengan POJO yang sebenarnya berarti lebih interoperabilitas antara bagian-bagian berbeda dari sistem.

Juga tentu saja ada JavaBeans Perusahaan yang merupakan masalah lain dan tidak boleh dicampur dengan JavaBeans biasa. Saya hanya ingin menyebutkan EJB: karena namanya mirip dan mudah membuat mereka berdua bingung.

Kacang dalam aplikasi web

Jika Anda menganggap JavaBeans "normal" dalam konteks aplikasi web, itu lebih masuk akal daripada mengenakan sepatu di kaki Anda. Karena spesifikasi Servlet mengharuskan sesi menjadi serializable, itu berarti Anda harus menyimpan data Anda dalam sesi sebagai sesuatu yang serializable - mengapa tidak membuatnya jadi kacang! Cukup masukkan SomeBusinessDataBean Anda ke dalam sesi dan Anda siap melakukannya, sangat mudah, sesuai spesifikasi dan nyaman.

Juga mentransfer data di sekitar aplikasi juga mudah karena JavaBeans membantu Anda memisahkan bagian dari aplikasi Anda sepenuhnya. Pikirkan JavaBeans sebagai surat dan berbagai subsistem aplikasi sebagai departemen dalam sebuah perusahaan yang sangat besar: Dept.A mengirimkan banyak data ke Dept.B, Dept.B tidak tahu - atau bahkan peduli - dari mana data berasal hanya dari sebagaimana mestinya dan hanya dapat membuka surat itu, membaca hal-hal dari itu dan melakukan hal berdasarkan data itu.

Kacang dalam aplikasi mandiri

Sebenarnya apa yang di atas berlaku untuk aplikasi mandiri juga, satu-satunya perbedaan adalah Anda dapat mengacaukan UI sedikit lebih karena aplikasi standalone memiliki UI stateful: sementara aplikasi web memiliki statelss UI: yang dalam beberapa kasus hanya mensimulasikan stateful UI: s . Karena perbedaan ini, lebih mudah membuat kekacauan dengan aplikasi mandiri tapi itu layak menjadi topik lain dan tidak berhubungan langsung dengan JavaBeans sama sekali.

Esko
sumber
50

Kacang tidak banyak, sungguh. Untuk kelas menjadi "kacang", yang dibutuhkan hanyalah:

  • untuk memiliki publik, tidak ada konstruktor argumen
  • menjadi serializable (untuk mengimplementasikan antarmuka Serializable, baik secara langsung atau melalui salah satu kelas supernya).

Untuk itu, Anda bisa menambahkan getter dan setter untuk properti kelas yang sesuai dengan konvensi penamaan tertentu jika Anda ingin bidang dapat ditemukan dalam keadaan tertentu (misalnya membuat kelas itu beberapa objek yang dapat Anda seret dan jatuhkan dari editor visual di Anda IDE, misalnya).

Anda dapat menemukan lebih banyak langsung dari Sun di sini .

JRL
sumber
15

Java Bean adalah komponen perangkat lunak yang telah dirancang untuk dapat digunakan kembali dalam berbagai lingkungan yang berbeda. Tidak ada batasan pada kemampuan Bean. Ini dapat melakukan fungsi sederhana, seperti memeriksa ejaan dokumen, atau fungsi kompleks, seperti meramalkan kinerja portofolio saham. Bean mungkin terlihat oleh pengguna akhir. Salah satu contohnya adalah tombol pada antarmuka pengguna grafis. Bean juga tidak terlihat oleh pengguna. Perangkat lunak untuk mendekode aliran informasi multimedia secara real time adalah contoh dari jenis blok bangunan ini. Akhirnya, Bean dapat dirancang untuk bekerja secara mandiri di stasiun kerja pengguna atau untuk bekerja sama dengan satu set komponen terdistribusi lainnya. Perangkat lunak untuk menghasilkan diagram lingkaran dari serangkaian titik data adalah contoh Bean yang dapat dieksekusi secara lokal. Namun,

Kita akan segera melihat perubahan spesifik apa yang harus dilakukan pengembang perangkat lunak ke kelas sehingga dapat digunakan sebagai Java Bean. Namun, salah satu tujuan dari desainer Java adalah untuk membuatnya mudah untuk menggunakan teknologi ini. Oleh karena itu, perubahan kode minimal.

Keuntungan Kacang Jawa

Arsitektur komponen perangkat lunak menyediakan mekanisme standar untuk menangani blok bangunan perangkat lunak. Daftar berikut ini menyebutkan beberapa manfaat spesifik yang disediakan teknologi Java untuk pengembang komponen:

  • A Bean mendapatkan semua manfaat dari paradigma "write-once, run-anywhere" Java.
  • Properti, acara, dan metode Kacang yang terpapar ke alat pembuat aplikasi dapat dikontrol.
  • A Bean dapat dirancang untuk beroperasi dengan benar di berbagai lokasi, yang membuatnya berguna di pasar global.
  • Perangkat lunak bantu dapat disediakan untuk membantu seseorang mengonfigurasi Bean. Perangkat lunak ini hanya diperlukan ketika parameter waktu desain untuk komponen itu sedang diatur. Itu tidak perlu dimasukkan dalam lingkungan run-time.
  • Pengaturan konfigurasi Bean dapat disimpan dalam penyimpanan persisten dan dipulihkan di lain waktu.
  • Bean dapat mendaftar untuk menerima acara dari objek lain dan dapat menghasilkan acara yang dikirim ke objek lain.

Berikut adalah contoh sederhana dari bahasa Jawa:

public class MyBean implements java.io.Serializable
{

       protected  int theValue;

       public MyBean()
       {
       }

       public void setMyValue(int newValue)
       {
           theValue = newValue;
       }

      public int getMyValue()
      {
           return theValue;
      }

}

Ini adalah Bean nyata bernama MyBean yang memiliki status (variabel theValue) yang secara otomatis akan disimpan dan dipulihkan oleh mekanisme persistensi JavaBeans, dan memiliki properti bernama MyValue yang dapat digunakan oleh lingkungan pemrograman visual. Bean ini tidak memiliki representasi visual, tetapi itu bukan persyaratan untuk komponen JavaBean.

Vibha Sanskrityayan
sumber