Vad är viloläge?
Hibernate är en öppen källkod (ORM) baserad java-persistensram. Det är ett ORM-mappningsverktyg i java. Hibernate är utformad med behovet av att minska komplexiteten medan du ansluter en relationsdatabas via java. Hibernate framework är utformat för att kartlägga java-objekt för att implementera objektorienterad programmering i den relationella databasen. Så här övervinner anslutningar till relationsdatabasen för att utföra frågor:
- Viloläge ansluts direkt till den angivna databasen och använder viloläget frågespråk (HQL) för att köra frågor och kartfrågeresultat till java-objekt.
- Viloläge använder egenskaper som är inställda i XML-fil för viloläge-konfiguration för att kartlägga frågeställningar till java-objekt.
- Databasanslutningen skapas med en session som hjälper till att spara och hämta det ihållande Java-objektet.
- Sessionen skapas med Session-fabriksgränssnittet. I idealfallet bör det bara finnas en sessionsfabrik per databas.
Jämförelse av viloläge och JDBC
Här är en jämförelsetabell som visar en jämförelse mellan viloläge och JDBC:
Övervintra | JDBC |
Viloläge innehåller betongklasser som tillhandahåller pannplattlogik. | JDBC tillhandahåller endast gränssnitt och abstrakta klasser. |
Alla undantag som kastas i viloläge är inte avmarkerade. | Alla klasser i JDBC kastar kontrollerade undantag. |
Det kräver inte mer resurshantering och gör det internt. | Det kräver mer resurshantering som att öppna och stänga resurser. |
Lagrar java-objekt direkt. | Det kan inte lagra objekt direkt. |
Stöder databasoberoende frågor. | Stöder databasspecifika frågor. |
Stödjer caching. | Det stöder inte cachning. |
Stödla lat laddning. | Det stöder inte lat laddning. |
Hibernate Framework Architecture
Viloläge följer den skiktade arkitekturen och har följande lager:
- Java-applikationslager
- Viloläge
- Backend API Layer
- Databaslager
Hibernate lager innehåller följande komponenter som är följande:
1. Hibernate Configuration Object
Detta är det första objektet man måste skapa för att upprätta databasanslutning med viloläge. Det ska idealiskt skapas en gång under applikationsinitieringen. Konfigurationsobjektet innehåller följande:
- Databasanslutning: Databasanslutning upprättas med en eller flera konfigurationsfiler. Filerna är i viloläge. Fastigheter och hibernate.cfg.xml.
- Mapping: Detta skapar en kartläggning mellan java klasser och relationsdatabas tabeller.
2. Session Factory
Konfigurationsobjekt skapat i steg 1 används för att skapa ett sessionfabriksobjekt som gör viloläge konfigurationen klar med den medföljande konfigurationsfilen och gör det möjligt att skapa ett sessionobjekt. Eftersom sessionsfabriken är ett tungt objekt skapas det vanligtvis en gång under applikationens startfas. Det finns ett behov av fabriksobjekt med flera sessioner om anslutningar till flera databaser måste upprättas. Sessionfabriken är också ett tråd-säkert objekt.
3. session
Sessionsobjektet upprättar en fysisk anslutning till databasen. Det är ett lättviktigt objekt och bör skapas varje gång interaktion med databasen krävs. Om ett objekt behöver kvarstå eller måste hämtas, kan det bara göras med sessionobjektet. Sessionsobjektet ska stängas så snart den nödvändiga åtgärden är klar eftersom de inte är trådsäkra.
4. Transaktion
Det är ett valfritt objekt och representerar en arbetsenhet som utförs med databasen. Ett transaktionsobjekt säkerställer att antingen alla operationer måste utföras eller att ingen av dem måste utföra. Det är ett enkeltrådigt och kortlivat objekt.
5. Frågeställning
Detta objekt använder strukturerat frågespråk (SQL) eller Hibernate Query Language (HQL) för att hämta data från databasen och instansera objekt. Ett frågaobjekt kan användas för att begränsa utdata som returneras från frågan, binda frågeparametrar och köra frågan.
frågor
Här kommer vi att utföra några frågor som kommer att göra saker mer tydliga. Låt oss betrakta en enhetsanställd som har klassstrukturen som:
Koda:
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 kräver en XML-fil som heter hibernate.cfg.xml som ser ut:
Koda:
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernatetest
edubca
edubcauser
org.hibernate.dialect.MySQLDialect
create
Nedan är koden för att visa hur infogning och hämtning sker i databasen med viloläge:
Koda:
//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());
)
Produktion:
En anställd med ID 1 har Namn Yash har en lön på 40000.
En anställd med ID 2 har Namn Aman har en lön på 42000.
Slutsats
I den här artikeln har vi täckt viloläge i detalj om dess arkitektur, jämförelse med JDBC och kodexempel. Vi noterade också att viloläge är ett enkelt och effektivt sätt att interagera med databasen.
Rekommenderade artiklar
Detta är en guide till viloläge. Här diskuterar vi arkitektur, komponenter och jämförelse av viloläge och JDBC med kodexempel. Du kan också titta på följande artiklar för att lära dig mer -
- Ramar i Java
- Vad är testautomationsramar?
- HADOOP-ramverk
- .Net Core vs .Net Framework
- 2D-grafik i Java
- Kast vs kastar | Topp 5 skillnader du borde veta