Qu'est-ce que le cadre Hibernate?
Hibernate est un framework de persistance Java basé sur la cartographie relationnelle objet (ORM) open source. Il s'agit d'un outil de cartographie ORM en java. Hibernate est conçu avec la nécessité de réduire la complexité lors de la connexion d'une base de données relationnelle via java. Le framework Hibernate est conçu pour mapper des objets java afin d'implémenter une programmation orientée objet dans la base de données relationnelle. Voici comment mettre en veille prolongée les connexions à la base de données relationnelle pour exécuter les requêtes:
- Hibernate se connecte directement à la base de données spécifiée et utilise le langage de requête Hibernate (HQL) pour exécuter les requêtes et mapper les résultats des requêtes aux objets java.
- Hibernate utilise les propriétés définies dans le fichier XML de configuration Hibernate pour mapper les résultats de la requête aux objets java.
- La connexion à la base de données est créée à l'aide d'une session qui permet d'enregistrer et de récupérer l'objet Java persistant.
- La session est créée à l'aide de l'interface de fabrique de sessions. Dans un cas idéal, il ne devrait y avoir qu'une seule fabrique de sessions par base de données.
Comparaison de Hibernate et JDBC
Voici un tableau de comparaison montrant une comparaison entre hibernate et JDBC:
Hiberner | JDBC |
Hibernate contient des classes concrètes qui fournissent une logique standard. | JDBC ne fournit que des interfaces et des classes abstraites. |
Toutes les exceptions levées par l'hibernation ne sont pas vérifiées. | Toutes les classes de JDBC lèvent des exceptions vérifiées. |
Il ne nécessite pas plus de gestion des ressources et le fait en interne. | Cela nécessite davantage de gestion des ressources comme l'ouverture et la fermeture des ressources. |
Stocke directement les objets java. | Il ne peut pas stocker d'objets directement. |
Prend en charge les requêtes indépendantes de la base de données. | Prend en charge les requêtes spécifiques aux bases de données. |
Prend en charge la mise en cache. | Il ne prend pas en charge la mise en cache. |
Supporte le chargement paresseux. | Il ne prend pas en charge le chargement paresseux. |
Architecture du cadre Hibernate
Hibernate suit l'architecture en couches et a les couches suivantes:
- Couche d'application Java
- Couche d'hibernation
- Couche API backend
- Couche de base de données
La couche Hibernate contient les composants suivants, qui sont les suivants:
1. Hibernate Configuration Object
Il s'agit du premier objet à créer pour établir une connexion à la base de données à l'aide de la mise en veille prolongée. Il doit idéalement être créé une fois, lors de l'initialisation de l'application. L'objet de configuration fournit les éléments suivants:
- Connexion à la base de données: la connexion à la base de données est établie à l'aide d'un ou plusieurs fichiers de configuration. Les fichiers sont hibernés .properties et hibernate.cfg.xml.
- Mappage: cela crée un mappage entre les classes java et les tables de base de données relationnelles.
2. Session Factory
L'objet de configuration créé à l'étape 1 est utilisé pour créer un objet de fabrique de session qui rend la configuration d'hibernation prête à l'aide du fichier de configuration fourni et laisse la place à l'objet de session à créer. Étant donné que la fabrique de sessions est un objet lourd, elle est généralement créée une fois pendant la phase de démarrage de l'application. Il existe un besoin pour un objet de fabrique de sessions multiples au cas où des connexions à plusieurs bases de données doivent être établies. En outre, la fabrique de sessions est un objet thread-safe.
3. Session
L'objet session établit une connexion physique avec la base de données. Il s'agit d'un objet léger et doit être créé chaque fois qu'une interaction avec la base de données est requise. Si un objet doit être persistant ou doit être récupéré, cela ne peut être fait qu'en utilisant l'objet session. L'objet de session doit être fermé dès que l'opération requise est terminée car ils ne sont pas thread-safe.
4. Transaction
Il s'agit d'un objet facultatif et représente une unité de travail effectuée avec la base de données. Un objet de transaction garantit que toutes les opérations doivent s'exécuter ou qu'aucune d'entre elles ne doit s'exécuter. Il s'agit d'un objet à filetage unique et de courte durée.
5. Objet de requête
Cet objet utilise le langage de requête structuré (SQL) ou le langage de requête Hibernate (HQL) pour extraire des données de la base de données et instancier des objets. Un objet Query peut être utilisé pour limiter la sortie renvoyée par la requête, lier les paramètres de requête et exécuter la requête.
Requêtes
Ici, nous allons exécuter quelques requêtes qui clarifieront les choses. Considérons un employé d'entité ayant une classe structurée comme suit:
Code:
Package com.edubca.hibernatetest;
@Entity
@Table(name = "EMPLOYEE")
public class Employee implements Serializable
(
private static final long serialVersionUID = -1798070786993123455L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "empID")
private Integer empID;
@Column(name = "NAME")
private String empName;
@Column(name = "SALARY")
private Integer salary;
//Getters and setters
)
Hibernate nécessite un fichier XML appelé hibernate.cfg.xml qui ressemble à:
Code:
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernatetest
edubca
edubcauser
org.hibernate.dialect.MySQLDialect
create
Ci-dessous, le code pour montrer comment l'insertion et la récupération ont lieu dans la base de données à l'aide de la mise en veille prolongée:
Code:
//Create Configuration object
Configuration con=new AnnotationConfiguration().configure(new File("hibernate.cgf.xml"));
// create session factory using configuration
SessionFactory fact=conf.buildSessionFactory();
//get session from session factory
Session session=fact.openSession();
//Instantiate and populate Employee entity object
Employee emp=new Employee();
emp.setempID(1);
emp.setempName(“Yash”);
emp.setSalary(40000);
Employee emp1=new Employee();
emp1.setempID(2);
emp1.setempName(“Aman”);
emp1.setSalary(42000);
//persist emp object
session.save(emp);
//persist emp1 object
session.save(emp1);
//retrieve data from database
Query query=session.createQuery(“from Employee”);
List list= query.list();
For(Employee e : list)(
System.out.println(“Employee with ID ” + e.getempID() + “ has Name ” + e.getempName() + “ has salary ” + e.getsalary());
)
Production:
Un employé avec ID 1 a Nom Yash a un salaire de 40000.
Un employé avec ID 2 a le nom Aman a un salaire de 42000.
Conclusion
Dans cet article, nous avons couvert hibernate en détail, à propos de son architecture, de la comparaison avec JDBC et des exemples de code. Nous avons également noté que la mise en veille prolongée fournit un moyen simple et efficace d'interagir avec la base de données.
Articles recommandés
Ceci est un guide du framework Hibernate. Nous discutons ici de l'architecture, des composants et de la comparaison d'Hibernate et de JDBC avec des exemples de code. Vous pouvez également consulter les articles suivants pour en savoir plus -
- Cadres en Java
- Qu'est-ce que les cadres d'automatisation des tests?
- Cadre HADOOP
- .Net Core vs .Net Framework
- Graphiques 2D en Java
- Lancer vs lancer | Les 5 principales différences que vous devez savoir