일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 봄 사랑 벚꽃 말고
- IT
- 악보
- DBMS 구성요소
- 핑거스타일
- I'm fine thank you
- SQL 처리
- 천공의 시간
- 니가 참 좋아
- db
- 오라클
- index
- 데이터베이스
- oracle
- 아이유
- 레이디스코드
- nginx
- Inside Of Me
- DBMS
- 장범준
- 기타
- 오라클 아키텍처
- 인덱스
- 스위트라떼
- 6학년 8반 1분단
- 개발자
- 슬픔의 후에
- 신입
- 말 더듬
- 러블리즈
취미로 음악을 하는 개발자
[Spring Framework] Hibernate 본문
참고
https://joosjuliet.github.io/hibernate_structure/
Hibernate ORM
: 자바 언어를 위한 ORM 프레임워크, EJB2 스타일의 Entity Beans 이용을 대체할 목적으로 시작됨 (위키백과)
Hibernate ORM을 통해 개발자는 오래 지속되는 애플리케이션을 보다 쉽게 작성 가능 (Hibernate.org)
JPA
Hibernate를 사용하면 상속, 다형성 및 Java 콜렉션 프레임워크를 포함한 자연스러운 객체 지향 용어에 따라 지속적인 클래스를 개발할 수 있다. Hibernate는 영속성을 위한 인터페이스나 클래스가 필요하지 않으며 클래스나 데이터 구조를 영속적이게 만든다.
고성능
Hibernate는 자동 버전 관리 및 타임 스탬핑으로 느린 초기화, 수많은 Fetching 방법 및 낙관적 Locking을 지원합니다. 또 특별한 데이터베이스 테이블이나 필드가 필요하지 않으며 런타임 대신에 시스템 초기화시 많은 SQL문을 생성한다.
Hibernate는 개발자의 생산성과 런타임 성능 측면에서 일관된 JDBC 코드보다 일관된 성능을 지속적으로 제공한다.
확장성
Hibernate는 응용 프로그램 서버 클러스터에서 작동하고 확장성이 뛰어난 아키텍처를 제공하도록 설계되었다. 모든 환경에서 Hibernate 규모는 수백 명의 사용자에게 서비스를 제공하는 사내 인트라넷 또는 수십만의 서비스를 제공하는 미션 크리티컬 애플리케이션을 위해 사용해야 한다.
* 미션 크리티컬
: 직역하면 '지대한 사명'이란 의미로, 한 번 실패하면 살아날 수 없는 절체절명의 비즈니스나 프로젝트를 뜻함.
기업 활동을 하는데 필요한 컴퓨터, 네트워크, 소프트웨어, 데이터 등은 어떤 재난이 닥치더라도 즉각 복구해야 기업의 생명을 이어나갈 수 있다는 의미.
신뢰성
Hibernate는 수만명의 Java 개발자가 수용하고 사용함으로써 입증된 우수한 안정성과 품질
Hibernate 구조
ㄴHibernate 최소 구조
총 4가지 레이어로 아래와 같이 이루어져 있다.
Java application layer
Hibernate framework layer
Backhand api layer
Database layer
- Hibernate framework layer
데이터베이스와 응용 프로그램 사이에 layer를 만듬
데이터베이스의 연결 문자열, 엔터티 클래스, 매핑 등의 구성 정보를 로드
애플리케이션과 데이터베이스 간의 데이터를 동기화하는 영속 객체를 생성
ㄴHibernate의 포괄적인 구조
데이터를 데이터베이스에 유지하기 위해 Hibernate는 엔티티 클래스(데이터베이스 테이블과 매핑된 Java 클래스)의 인스턴스를 생성
이 객체는 아직 세션과 연결되지 않았거나 아직 데이터베이스에 유지되지 않기 때문에 Transient 객체라고 한다.
객체를 데이터베이스에 유지하기 위해 SessionFactory 인터페이스의 인스턴스가 생성한다.
SessionFactory는 Factory 디자인 패턴을 구현하는 Singleton 인스턴스인데, hibernate.cfg.xml 파일(Hibernate 구성 파일)을 로드하고 TransactionFactory와 ConnectionProvider의 도움으로 데이터베이스에 모든 구성 설정을 구현
Hibernate의 각 데이터베이스 연결은 Session 인터페이스의 인스턴스를 생성함으로써 생성된다.
Session은 데이터베이스와의 단일 연결을 나타내고, Session 오브젝트는 SessionFactory 오브젝트에서 만들어진다.
Hibernate API
SessionFactory (org.hibernate.SessionFactory)
: thread-safe의 특징을 가짐
org.hibernate.Session 인스턴스를 위한 factory.
org.hibernate.connection.ConnectionProvider의 클라이언트
* thread-safe
: 멀티 스레드 프로그래밍에서 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램 실행에 문제가 없음을 뜻함 (위키백과)
Session (org.hibernate.Session)
응용 프로그램과 영구 저장소 간의 대화를 나타내는 단일 스레드, 짧은 수명을 가진 객체
JDBC java.sql.Connection 을 포괄하고 있음(?). org.hibernate.Transaction을 위한 factory.
응용 프로그램의 영구 객체 및 컬렉션을 지속적으로 첫 번째 수준의 캐시를 유지하는데 이 캐시는 객체 그래프를 탐색하거나 식별자로 객체를 찾을 때 사용된다.
Transaction (org.hibernate.Transaction)
Hibernate는 기본 JDBC 또는 JTA 트랜잭션에서 애플리케이션을 추상화하는 내장 트랜잭션 API를 제공하고 각 트랜잭션은 작업의 원자 단위를 나타낸다(선택). 하나의 세션은 여러 트랜잭션을 통해 확장 될 수 있다.
ConnectionProvider (org.hibernate.connection.ConnectionProvider)
(선택) JDBC 연결을 위한 factory 및 pool이다. javax.sql.DataSource나 java.sql.DriverManager에서 애플리케이션을 추상화하고
응용 프로그램에는 노출되지않지만 개발자가 확장하거나 구현할 수 있다.
TransactionFactory (org.hibernate.TransactionFactory)
(선택) org.hibernate.Transaction 인스턴스를 위한 factory로, 응용 프로그램에는 노출되지않지만 개발자가 확장하거나 구현할 수 있다.
개인적으로 번역한 것도 있어서 오역이 있을 수도 있습니다.
'공대인 > Spring[Boot]' 카테고리의 다른 글
[Spring Framework] Spring Data JPA 엔티티 클래스 (Entity Class) (0) | 2019.09.29 |
---|---|
[Spring Framework] 엔티티(Entity), 엔티티 매니저(EntityManager), 영속 컨텍스트(Persistence Context) (0) | 2019.09.28 |
[Spring Framework] JPA 및 관련 개념 (0) | 2019.09.09 |
[Spring Boot] war 파일 배포 (0) | 2019.09.03 |
[Spring Boot] 외부 jar 사용하기 (FileUpload, Json) (2) | 2019.08.29 |