Hibernate Framework - Volledige gids voor Hibernate Framework

Inhoudsopgave:

Anonim

Wat is Hibernate Framework?

Hibernate is een open-source object-relationeel mapping (ORM) op basis van Java Persistence Framework. Het is een hulpmiddel voor het in kaart brengen van ORM in Java. Hibernate is ontworpen met de noodzaak om de complexiteit te verminderen en tegelijkertijd een relationele database te verbinden via Java. Hibernate framework is ontworpen om Java-objecten toe te wijzen om objectgeoriënteerd programmeren in de relationele database te implementeren. Dit is hoe een slaapstand in verbinding staat met de relationele database om query's uit te voeren:

  • Hibernate maakt rechtstreeks verbinding met de opgegeven database en gebruikt Hibernate query language (HQL) om query's uit te voeren en queryresultaten toe te wijzen aan Java-objecten.
  • Hibernate gebruikt eigenschappen ingesteld in het Hibernate XML-configuratiebestand om queryresultaten toe te wijzen aan Java-objecten.
  • De databaseverbinding wordt gemaakt met behulp van een sessie die helpt bij het opslaan en ophalen van het blijvende Java-object.
  • De sessie wordt gemaakt met behulp van de sessie-fabrieksinterface. In het ideale geval zou er slechts één sessiefabriek per database moeten zijn.

Vergelijking van Hibernate en JDBC

Hier is een vergelijkingstabel die een vergelijking toont tussen slaapstand en JDBC:

HibernateJDBC
Slaapstand bevat concrete klassen die boilerplate-logica bieden.JDBC biedt alleen interfaces en abstracte klassen.
Alle uitzonderingen die door winterslaap worden gegenereerd, zijn niet aangevinkt.Alle klassen in JDBC gooien gecontroleerde uitzonderingen.
Het vereist niet meer resource management en doet het intern.Het vereist meer resource management zoals het openen en sluiten van resources.
Slaat java-objecten rechtstreeks op.Het kan geen objecten direct opslaan.
Ondersteunt database onafhankelijke vragen.Ondersteunt database-specifieke vragen.
Ondersteunt caching.Het ondersteunt caching niet.
Ondersteuning lui laden.Het ondersteunt geen lui laden.

Hibernate Framework Architecture

Hibernate volgt de gelaagde architectuur en heeft de volgende lagen:

  • Java-toepassingslaag
  • Slaapstand laag
  • Backend API-laag
  • Databaselaag

De slaapstandlaag bevat de volgende componenten:

1. Slaapstand-configuratieobject

Dit is het eerste object dat moet worden gemaakt om een ​​databaseverbinding tot stand te brengen met behulp van de slaapstand. Het moet idealiter eenmaal worden gemaakt tijdens de initialisatie van de toepassing. Het configuratieobject biedt het volgende:

  • Databaseverbinding: databaseverbinding wordt tot stand gebracht met behulp van een of meer configuratiebestanden. De bestanden worden in de slaapstand gezet. Eigenschappen en hibernate.cfg.xml.
  • Mapping: hiermee wordt een mapping gemaakt tussen Java-klassen en relationele databasetabellen.

2. sessie fabriek

Configuratieobject gemaakt in stap 1 wordt gebruikt om een ​​sessie-fabrieksobject te maken dat de slaapstandconfiguratie gereed maakt met behulp van het meegeleverde configuratiebestand en plaats maakt voor het maken van een sessieobject. Omdat de sessiefabriek een zwaar object is, wordt deze meestal eenmaal tijdens de startfase van de toepassing gemaakt. Er is behoefte aan een fabrieksobject voor meerdere sessies voor het geval er verbindingen met meerdere databases moeten worden gemaakt. Ook is de sessiefabriek een thread-safe object.

3. Sessie

Het sessieobject brengt een fysieke verbinding tot stand met de database. Het is een lichtgewicht object en moet worden gemaakt telkens wanneer interactie met de database vereist is. Als een object moet worden gehandhaafd of moet worden opgehaald, kan dit alleen worden gedaan met behulp van het sessieobject. Het sessieobject moet worden gesloten zodra de vereiste bewerking is voltooid, omdat ze niet thread-safe zijn.

4. Transactie

Het is een optioneel object en vertegenwoordigt een werkeenheid die is uitgevoerd met de database. Een transactieobject zorgt ervoor dat alle bewerkingen moeten worden uitgevoerd of dat geen van beide moet worden uitgevoerd. Het is een single-threaded en kortstondig object.

5. Zoekopdrachtobject

Dit object gebruikt gestructureerde querytaal (SQL) of Hibernate Query Language (HQL) om gegevens uit de database op te halen en objecten te instantiëren. Een Query-object kan worden gebruikt om de uitvoer te beperken die door de query wordt geretourneerd, queryparameters te binden en de query uit te voeren.

Vragen

Hier zullen we enkele vragen uitvoeren die de zaken duidelijker maken. Laten we een entiteitmedewerker beschouwen die klasse heeft gestructureerd als:

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 vereist een XML-bestand met de naam hibernate.cfg.xml dat eruit ziet als:

Code:


com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernatetest
edubca
edubcauser
org.hibernate.dialect.MySQLDialect
create

Hieronder vindt u de code om te laten zien hoe invoeging en ophalen plaatsvindt in de database met behulp van de slaapstand:

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

Output:

Een werknemer met ID 1 heeft Naam Yash en heeft een salaris van 40000.
Een werknemer met ID 2 heeft Naam Aman en heeft een salaris van 42000.

Conclusie

In dit artikel hebben we de winterslaap in detail besproken, over de architectuur, vergelijking met JDBC en codevoorbeelden. We hebben ook opgemerkt dat hibernate een eenvoudige en efficiënte manier is om met de database te communiceren.

Aanbevolen artikelen

Dit is een handleiding voor het Hibernate Framework. Hier bespreken we de architectuur, componenten en vergelijking van slaapstand en JDBC met codevoorbeelden. U kunt ook de volgende artikelen bekijken voor meer informatie -

  1. Frameworks in Java
  2. Wat zijn testautomatiseringskaders?
  3. HADOOP Framework
  4. .Net Core versus .Net Framework
  5. 2D-afbeeldingen in Java
  6. Gooien versus Gooien | Top 5 verschillen die u moet weten