Maison > Java > javaDidacticiel > Une brève introduction à Hibernate

Une brève introduction à Hibernate

DDD
Libérer: 2024-09-29 06:13:29
original
715 Les gens l'ont consulté

Uma breve introdução ao Hibernate

Hibernate ialah alat ORM (Object-Relational Mapping) yang digunakan secara meluas dalam projek Java untuk memetakan objek daripada aplikasi kepada jadual dalam pangkalan data hubungan.
ORM ialah alat yang memudahkan pemetaan antara kelas dalam projek dan entiti dalam pangkalan data.
Dengan menggunakan rangka kerja seperti Hibernate, pembangun dapat menumpukan pada membangunkan domain dan bukannya bimbang tentang butiran kegigihan.

Ciri utama Hibernate ialah:
1. Ketelusan dalam akses data: Hibernate membenarkan pembangun menulis kod Java yang hanya memfokuskan pada objek dan bukan pada butiran kegigihan
2. Sokongan transaksi: Hibernate menawarkan kawalan transaksi bersepadu, memudahkan penyepaduan dengan pengurus transaksi yang berbeza. Ini memastikan operasi baca dan tulis data dilakukan dengan cara yang dijamin integriti data.
3. Kawalan warisan: Hibernate membolehkan anda memetakan warisan antara kelas ke pangkalan data secara fleksibel. Terdapat strategi pemetaan warisan yang berbeza seperti:
Strategi Jadual Tunggal: Satu jadual untuk semua kelas dalam hierarki.
Strategi Jadual Bergabung: Satu jadual untuk setiap kelas konkrit.
Jadual setiap Strategi Kelas: Jadual untuk setiap kelas.
4. Lazy Loading: Hibernate menyokong konsep lazy loading, di mana pengumpulan data dan perkaitan dimuatkan hanya apabila perlu, menjimatkan sumber memori.
5. Mekanisme pengesahan: Hibernate disepadukan dengan Bean Validation, membolehkan anda mentakrifkan peraturan pengesahan untuk medan entiti secara langsung dalam anotasi kelas.

Hibernate ialah salah satu daripada beberapa pelaksanaan JPA yang merupakan spesifikasi standard yang mentakrifkan cara ORM harus dilaksanakan di Jawa.
Rangka kerja ini membawa beberapa faedah seperti mengurangkan kod SQL dan JDBC kerana Hibernate sendiri secara automatik menjana dan melaksanakan pertanyaan. Ia juga serasi dengan beberapa pangkalan data hubungan seperti MySQL, PostgreSQL, MariaDB, dll. Penggunaan caching dan kawalan transaksi yang jelas membantu mengoptimumkan prestasi aplikasi.
Walau bagaimanapun, terdapat kelemahan untuk menggunakan Hibernate sebagai keluk pembelajarannya, walaupun operasi paling mudahnya adalah majoriti apabila kami mula melaksanakan caching, pemetaan warisan dan transaksi teragih, kami mungkin menghadapi kesukaran untuk memahami pada mulanya. Abstraksi yang ditawarkan oleh Hibernate juga boleh menambah overhed dalam situasi tertentu, terutamanya apabila pertanyaan yang sangat dioptimumkan diperlukan.

Di bawah ini kita boleh melihat contoh dengan kelas Produk dan di bawah penjelasan beberapa anotasi JPA yang dilaksanakan oleh Hibernate.

`@Entiti
@Jadual(nama = "produk")
Produk kelas awam {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private BigInteger id;

@Column(name = "nome_produto", nullable = false)
private String nome;

@Column(name = "descricao_produto")
private String descricao;

@Column(name = "preco_produto", nullable = false)
private BigDecimal preco;

// Getter e Setters
Copier après la connexion

}`

  1. @Entiti
    Anotasi @Entity menunjukkan bahawa kelas Produk ialah entiti JPA. Ini bermakna ia akan dipetakan ke jadual dalam pangkalan data. Setiap tika kelas Produk sepadan dengan baris dalam jadual ini.
    Kelas mesti mempunyai medan dengan anotasi @id untuk menunjukkan pengecam unik (kunci utama) entiti dalam pangkalan data.

  2. @Jadual(nama = "produk")
    Anotasi @Table menentukan nama jadual dalam pangkalan data yang entiti ini akan dipetakan. Dalam contoh, nama = "produk" mentakrifkan bahawa jadual yang dikaitkan dengan entiti Produk akan dipanggil "produk". Jika anotasi @Table tidak diberikan, nama jadual secara lalai akan menjadi nama kelas.

  3. @id
    Anotasi @id digunakan untuk menandakan medan id sebagai kunci utama entiti. Dalam pangkalan data, medan ini akan digunakan sebagai pengecam unik untuk setiap tika entiti Produk.

  4. @GeneratedValue(strategi = GenerationType.SEQUENCE)
    Anotasi @GeneratedValue menunjukkan bahawa nilai medan id akan dijana secara automatik. Sifat strategi = GenerationType.SEQUENCE menentukan bahawa Hibernate harus menggunakan urutan untuk menjana nilai kunci utama dalam pangkalan data.
    Terdapat strategi lain untuk menjana kunci utama, seperti:
    AUTO: Mewakilkan pilihan strategi kepada penyedia kegigihan (dalam kes ini, Hibernate).
    IDENTITI: Menggunakan lajur identiti daripada pangkalan data, yang menjana nilai secara automatik semasa sisipan.
    JADUAL: Menggunakan jadual tertentu untuk menyimpan kunci utama.

  5. @Column(name = "nom_produit", nullable = false)
    L'annotation @Column mappe le champ du nom de classe à la colonne correspondante dans la base de données. Dans l'exemple, la colonne s'appellera "product_name".
    Le paramètre nullable = false indique que cette colonne ne peut pas être nulle dans la base de données. Autrement dit, le champ nom doit avoir une valeur.

Hibernate est un outil puissant et flexible pour manipuler les données dans les applications Java, éliminant le besoin d'écrire du SQL manuellement. Il facilite le développement d'applications complexes en faisant abstraction du mappage entre les objets de la base de données et les tables et, étant compatible avec la spécification JPA, il offre une API standardisée, avec la possibilité d'utiliser des fonctionnalités avancées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal