최대 절전 모드는 무엇이며 어떻게 작동합니까?
최대 절전 모드 란 무엇입니까?
Hibernate는 객체 지향 도메인 모델을 웹 애플리케이션용 관계형 데이터베이스에 매핑하는 프레임워크를 제공하는 오픈 소스 객체 관계형 매핑(ORM) 도구입니다.
Hibernate ORM을 사용하면 개발자는 데이터가 애플리케이션 프로세스보다 오래 지속되는 애플리케이션을 보다 쉽게 작성할 수 있습니다. ORM(Object/Relational Mapping) 프레임워크로서 Hibernate는 관계형 데이터베이스(JDBC를 통해)에 적용할 때 데이터 지속성과 관련이 있습니다.
Hibernate를 사용하면 상속, 다형성, 연결, 구성 및 Java 컬렉션 프레임워크를 비롯한 자연스러운 객체 지향 관용구를 따르는 영구 클래스를 개발할 수 있습니다. Hibernate는 영구적인 클래스를 위한 인터페이스나 기본 클래스를 필요로 하지 않으며 모든 클래스 또는 데이터 구조가 영구적일 수 있도록 합니다.
JPA 공급자
고유한 "네이티브"API 외에도 Hibernate는 JPA(Java Persistence API) 사양의 구현이기도 합니다. 따라서 Java SE 응용 프로그램, Java EE 응용 프로그램 서버, Enterprise OSGi 컨테이너 등 JPA를 지원하는 모든 환경에서 쉽게 사용할 수 있습니다.
고성능
Hibernate는 지연 초기화, 수많은 가져오기 전략, 자동 버전 관리 및 타임 스탬프를 통한 낙관적 잠금을 지원합니다. Hibernate는 특별한 데이터베이스 테이블이나 필드를 필요로 하지 않으며 런타임이 아닌 시스템 초기화 시간에 많은 SQL을 생성합니다.
Hibernate는 개발자 생산성과 런타임 성능 측면에서 직선 JDBC 코드보다 우수한 성능을 일관되게 제공합니다.
확장성
Hibernate는 애플리케이션 서버 클러스터에서 작동하고 확장성이 뛰어난 아키텍처를 제공하도록 설계되었습니다. Hibernate는 모든 환경에서 잘 확장됩니다. Hibernate를 사용하여 수백 명의 사용자에게 서비스를 제공하는 사내 인트라넷을 구동하거나 수십만 명의 사용자에게 서비스를 제공하는 미션 크리티컬 애플리케이션에 사용하십시오.
믿을 수 있는
Hibernate는 뛰어난 안정성과 품질로 잘 알려져 있으며, 수만 명의 Java 개발자가 수용하고 사용하는 것으로 입증되었습니다.
확장성
Hibernate는 고도로 구성 가능하고 확장 가능합니다.
JPA란 무엇입니까 - Java Persistence API
JPA(Java Persistence API)는 Java 사양입니다. Java 개체와 관계형 데이터베이스 간에 데이터를 유지하는 데 사용됩니다. JPA는 객체 지향 도메인 모델과 관계형 데이터베이스 시스템 간의 다리 역할을 합니다.
JPA는 도구나 프레임워크가 아닙니다. 오히려 모든 도구나 프레임워크에서 구현할 수 있는 일련의 개념을 정의합니다.
몇 가지 인기 있는 구현은 Hibernate, EclipseLink **및 **Apache OpenJPA입니다.
Hibernate 쿼리 언어(HQL)
HQL(Hibernate Query Language)은 SQL과 유사하지만 테이블과 열에서 작동하지 않는 객체 지향 쿼리 언어입니다.
FROM Employee AS E
JPA 및 Hibernate와의 연관
종속성 메이븐
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core-jakarta</artifactId>
<version>5.5.7.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
리소스/META-INF/persistence.xml
<?xml version="1.0" encoding="utf-8" ?>
<persistence xmlns="https://jakarta.ee/xml/ns/persistence" version="3.0">
<persistence-unit name="testJPA" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>com.hibernateapp.entity.Customer</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="jakarta.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/test-hibernate?serverTimezone=America/Bogota"/>
<property name="jakarta.persistence.jdbc.user" value="root"/>
<property name="jakarta.persistence.jdbc.password" value="admin"/>
<property name="jakarta.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect"/>
<property name="hibernate.show_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
관리자 JPA - EntityManager
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.Persistence;
public class JpaManager {
private static final EntityManagerFactory entityManagerFactory = buildEntityManagerFactory();
private static EntityManagerFactory buildEntityManagerFactory(){
return Persistence.createEntityManagerFactory("testJPA");
}
public static EntityManager getEntityManager() {
return entityManagerFactory.createEntityManager();
}
}
고객 엔터티
import jakarta.persistence.*;
@Entity
@Table(name="customer")
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@Column(name="last_name")
private String lastName;
@Column(name="payment_method")
private String paymentMethod;
public Customer() {
}
public Customer(Long id, String name, String lastName, String paymentMethod) {
this.id = id;
this.name = name;
this.lastName = lastName;
this.paymentMethod = paymentMethod;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getPaymentMethod() {
return paymentMethod;
}
public void setPaymentMethod(String paymentMethod) {
this.paymentMethod = paymentMethod;
}
@Override
public String toString() {
return "Customer{" +
"id=" + id +
", name='" + name + '\'' +
", lastName='" + lastName + '\'' +
", paymentMethod='" + paymentMethod + '\'' +
'}';
}
}
테이블 고객 생성
CREATE TABLE `test`.`customer` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NULL,
`last_name` VARCHAR(45) NULL,
`payment_method` VARCHAR(45) NULL,
PRIMARY KEY (`id`))
COMMENT = 'Description table customer';
데이터 삽입
INSERT INTO `test`.`customer` (`name`, `last_name`, `payment_method`) VALUES ('carlos', 'martinez', 'debit');
EntityManager로 고객 목록 테스트
import jakarta.persistence.EntityManager;
import com.carlos.hibernateapp.entity.Customer;
import com.carlos.hibernateapp.manager.JpaManager;
import java.util.List;
public class HibernateList {
public static void main(String[] args) {
EntityManager em = JpaManager.getEntityManager();
List<Customer> customers = em.createQuery("select c from Customer c", Customer.class).getResultList();
customers.forEach(System.out::println);
em.close();
}
}
산출
Hibernate: select customer0_.id as id1_0_, customer0_.last_name as last_name2_0_, customer0_.payment_method as payment_method3_0_, customer0_.name as name4_0_ from customers customer0_
id=1, name='carlos', last_name='martinez', paymentMethod='debito
출처: Hibernate
Reference
이 문제에 관하여(최대 절전 모드는 무엇이며 어떻게 작동합니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/c4rlosc7/what-is-hibernate-and-how-does-it-work--1h4b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)