Pertanyaan Apa itu JavaBean sebenarnya?


Saya mengerti, saya pikir, bahwa "Bean" adalah kelas Java dengan properti dan getter / setter. Sebanyak yang saya mengerti, itu setara dengan struct C. Benarkah?

Juga, apakah ada yang nyata sintaksis perbedaan antara kacang dan kelas reguler? Apakah ada definisi khusus atau antarmuka?

Pada dasarnya, mengapa ada istilah untuk ini?

Edit: Jika Anda bisa begitu baik dan menambahkan informasi mengenai Serializable antarmuka, dan apa artinya, untuk jawaban Anda, saya akan sangat berterima kasih.


1361
2017-07-21 00:41


asal


Jawaban:


JavaBean hanya a standar

  1. Semua properti pribadi (digunakan getter / setter)
  2. Publik konstruktor tanpa argumen
  3. Menerapkan Serializable.

Itu dia. Itu hanya sebuah konvensi. Banyak perpustakaan bergantung padanya.

Dengan hormat Serializable, dari Dokumentasi API:

Serializability kelas diaktifkan oleh kelas yang mengimplementasikan   antarmuka java.io.Serializable. Kelas yang tidak menerapkan ini   antarmuka tidak akan memiliki status serial atau deserialized.   Semua subtipe dari kelas yang dapat diprogramkan sendiri dapat dikelompokkan. Itu   antarmuka serialisasi tidak memiliki metode atau bidang dan hanya berfungsi untuk   mengidentifikasi semantik menjadi serializable.

Dengan kata lain, objek serializable dapat ditulis ke aliran, dan karenanya file, objek database, apa pun benar.

Juga, tidak ada perbedaan sintaksis antara JavaBean dan kelas lain - kelas mendefinisikan JavaBean jika mengikuti standar.

Ada istilah untuk itu karena standar memungkinkan pustaka untuk melakukan hal-hal secara terprogram dengan instance kelas yang Anda definisikan dengan cara yang telah ditentukan. Sebagai contoh, jika sebuah perpustakaan ingin melakukan streaming objek apa pun yang Anda lewati, ingin diketahui karena objek Anda dapat diseragamkan (dengan asumsi lib memerlukan objek Anda menjadi JavaBeans yang tepat).


1496
2017-07-21 00:45



Ada istilah untuk membuatnya terdengar istimewa. Kenyataannya tidak terlalu misterius.

Pada dasarnya, "Bean":

  • adalah objek yang dapat diprogramkan (yaitu, ia mengimplementasikan java.io.Serializable, dan melakukannya dengan benar), itu
  • memiliki "properti" yang getter dan setter hanya metode dengan nama tertentu (seperti, katakanlah, getFoo() adalah pengambil untuk properti "Foo"), dan
  • memiliki konstruktor default publik (sehingga dapat dibuat sesuai keinginan dan dikonfigurasi dengan mengatur propertinya).

Memperbarui:

Seperti untuk Serializable: Itu tidak lain hanyalah "antarmuka penanda" (antarmuka yang tidak menyatakan fungsi apa pun) yang memberitahu Java bahwa kelas pelaksana menyetujui (dan menyiratkan bahwa ia mampu) "serialisasi" - sebuah proses yang mengubah suatu instance menjadi aliran byte. Mereka byte dapat disimpan dalam file, dikirim melalui koneksi jaringan, dll, dan memiliki info yang cukup untuk memungkinkan JVM (setidaknya, yang tahu tentang jenis objek) untuk merekonstruksi objek nanti - mungkin dalam contoh yang berbeda dari aplikasi, atau bahkan di seluruh mesin lainnya!

Tentu saja, untuk melakukan itu, kelas harus mematuhi batasan-batasan tertentu. Kepala di antara mereka adalah bahwa semua bidang contoh harus berupa tipe primitif (int, bool, dll), contoh beberapa kelas yang juga dapat serial, atau ditandai sebagai transient sehingga Java tidak akan mencoba memasukkannya. (Ini tentu saja berarti itu transient bidang tidak akan bertahan selama perjalanan melalui sungai. Kelas yang memiliki transient bidang harus disiapkan untuk memulai ulang mereka jika perlu.)

Sebuah kelas yang tidak dapat mematuhi batasan-batasan itu seharusnya tidak diimplementasikan Serializable (dan, IIRC, compiler Java bahkan tidak akan membiarkan itu melakukannya.)


242
2017-07-21 00:50



JavaBeans adalah kelas Java yang mematuhi konvensi pengkodean yang sangat sederhana. Yang harus Anda lakukan adalah

  1. Implementasikan antarmuka java.io.Serializable - Untuk menyimpan status a obyek
  2. menggunakan konstruktor argumen kosong publik - Untuk instantiate objek
  3. Dan memberikan metode pengambil dan penyetel publik - Untuk mendapatkan dan menetapkan nilai variabel privat (properti).

79
2017-07-21 04:22



Properti JavaBeans

JavaBean adalah objek Java yang memenuhi konvensi pemrograman tertentu:

  1. Kelas JavaBean harus menerapkan juga Serializable atau Externalizable 

  2. Kelas JavaBean harus memiliki konstruktor no-arg

  3. Semua properti JavaBean harus memiliki metode penyetel dan pengambil publik

  4. Semua variabel instan JavaBean harus bersifat pribadi

Contoh JavaBeans

@Entity
public class Employee implements Serializable{

   @Id
   private int id;
   private String name;   
   private int salary;  

   public Employee() {}

   public Employee(String name, int salary) {
      this.name = name;
      this.salary = salary;
   }
   public int getId() {
      return id;
   }
   public void setId( int id ) {
      this.id = id;
   }
   public String getName() {
      return name;
   }
   public void setName( String name ) {
      this.name = name;
   }
   public int getSalary() {
      return salary;
   }
   public void setSalary( int salary ) {
      this.salary = salary;
   }
}

48
2018-01-24 09:33



Java Beans digunakan untuk kode yang lebih sedikit dan lebih banyak pendekatan kerja ... Java Beans digunakan di seluruh Java EE sebagai kontrak universal untuk penemuan dan akses runtime. Sebagai contoh, JavaServer Pages (JSP) menggunakan Java Beans sebagai objek transfer data antara halaman atau antara servlet dan JSP. Java EE's JavaBeans Activation Framework menggunakan Java Beans untuk mengintegrasikan dukungan untuk tipe data MIME ke Java EE. Java EE Management API menggunakan JavaBeans sebagai fondasi untuk instrumentasi sumber daya yang akan dikelola di lingkungan Java EE.

Tentang Serialisasi:

Dalam serialisasi objek, suatu objek dapat direpresentasikan sebagai urutan byte yang mencakup data objek serta informasi tentang jenis objek dan jenis data yang disimpan dalam objek.

Setelah objek serial telah ditulis ke dalam sebuah file, itu dapat dibaca dari file dan deserialized yaitu, informasi jenis dan byte yang mewakili objek dan datanya dapat digunakan untuk membuat ulang objek dalam memori.


18
2017-09-23 07:30



Anda akan menemukan Serialisasi berguna ketika menyebarkan proyek Anda di beberapa server karena kacang akan bertahan dan ditransfer di antara mereka.


17
2017-07-21 06:03



Penjelasan dengan sebuah contoh.

1. import java.io.Serializable

Untuk serialisasi, lihat dokumentasi.

2. bidang pribadi

Bidang harus pribadi untuk mencegah kelas luar dengan mudah memodifikasi bidang-bidang tersebut. Alih-alih langsung mengakses bidang-bidang itu, biasanya metode pengambil / penyetel digunakan.

3. Pembuat

Seorang konstruktor publik tanpa argumen.

4. pengambil / penyetel

Metoda pengambil dan penyetel untuk mengakses bidang pribadi.

/** 1. import java.io.Serializable */
public class User implements java.io.Serializable {
    /** 2. private fields */
    private int id;
    private String name;

    /** 3. Constructor */
    public User() {
    }
    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }

    /** 4. getter/setter */
    // getter
    public int getId() {
        return id;
    }
    public String getName() {
        return name;
    }
    // setter
    public void setId(int id) {
        this.id = is;
    }
    public void setName(String name) {
        this.name = name;
    }
}

16
2017-08-22 12:45



Sesuai Wikipedia:

  1. Kelas harus memiliki konstruktor default publik (tanpa argumen). Ini memungkinkan instantiasi mudah dalam pengeditan dan kerangka kerja aktivasi.

  2. Properti kelas harus dapat diakses dengan menggunakan get, set, is (dapat digunakan untuk properti boolean daripada mendapatkan), dan metode lain (disebut metode accessor dan metode mutator) sesuai dengan konvensi penamaan standar. Hal ini memungkinkan pemeriksaan otomatis yang mudah dan memperbarui keadaan kacang dalam kerangka kerja, banyak di antaranya termasuk editor khusus untuk berbagai jenis properti. Setter dapat memiliki satu atau lebih dari satu argumen.

  3. Kelas harus serializable. [Hal ini memungkinkan aplikasi dan kerangka kerja untuk menyimpan, menyimpan, dan mengembalikan keadaan kacang dengan cara yang independen dari VM dan platform.]

Untuk informasi lebih lanjut, ikuti ini link.


9
2018-06-16 11:41



Java Beans adalah standar, dan persyaratan sintaks dasarnya telah dijelaskan dengan jelas oleh jawaban yang lain.

Namun, IMO, itu lebih dari standar sintaks yang sederhana. Arti sebenarnya atau maksud penggunaan Java Beans adalah, bersama dengan berbagai alat pendukung di sekitar standar, untuk memfasilitasi penggunaan kembali kode dan rekayasa perangkat lunak berbasis komponen, yaitu memungkinkan pengembang untuk membangun aplikasi dengan merakit komponen yang ada (kelas) dan tanpa harus menulis kode (atau hanya harus menulis kode lem kecil). Sayangnya teknologi ini jauh di bawah perkiraan dan kurang dimanfaatkan oleh industri, yang dapat diceritakan dari jawaban di thread ini.

Jika Anda membaca Oracle tutorial tentang Java Beans, Anda bisa mendapatkan pemahaman yang lebih baik tentang itu.


8
2018-05-21 15:11



Mengenai bagian kedua dari pertanyaan Anda, Serialisasi adalah mekanisme persistensi yang digunakan untuk menyimpan objek sebagai urutan byte yang ditandatangani. Taruh kurang secara formal, itu menyimpan status objek sehingga Anda dapat mengambilnya nanti, dengan de-serialisasi.


7
2017-07-21 01:14



Java Bean adalah kelas java [konseptual] yang harus mengikuti konvensi berikut:

  1. Ini harus memiliki konstruktor no-arg.
  2. Itu harus Serializable.
  3. Ini harus menyediakan metode untuk mengatur dan mendapatkan nilai-nilai properti, yang dikenal sebagai metode pengambil dan penyetel.

Ini adalah komponen perangkat lunak yang dapat digunakan kembali. Dapat mengenkapsulasi banyak objek ke dalam satu objek sehingga objek yang sama dapat diakses dari tempat-tempat ganda dan merupakan langkah menuju pemeliharaan kode yang mudah.


7
2017-12-06 08:29