Hibernate大复习

Jun 07, 2016 pm 04:10 PM
hibernate 건축학 검토

/* 1.Hibernate的体系结构 2.Hibernate API体系 *********************************************************************************************************************************************************************************************** Hib

/*
1.Hibernate的体系结构
2.Hibernate API体系
***********************************************************************************************************************************************************************************************


Hibernate API总结
名称 描述
Configuration类 负责配置和启动Hibernate,创建SessionFactory实例


SessionFactory接口 负责初始化Hibernate,创建Session实例,充当数据源代理,一个SessionFactory实例对应一个数据源,由于SessionFactory需要自己缓存
消耗的资源比较大,因此,当应用中只有一个数据源时,最好只创建一个SessionFactory对象实例,除非有多个数据源,才分别为每个数据源创建一个SessionFactory对象实例
Session接口 负责保存,更新,删除,加载和查询持久化对象,充当持久化管理器

Transaction接口 对底层的事务进行了封装,充当了事务管理器

Query接口,Criteria接口 执行数据库查询,充当Hibernate的查询器


***************************************************************************************************************************************************************************************************
Hibernate Web应用的开发步骤:
(1)创建数据源
(2)将Hibernate所需的JAR包复制到WEB-INF/lib下
(3)创建Hibernate配置文件
(4)利用Hibernate的第三方工具或Eclipse插件从数据库中创建出相应的实体对象其ORM映射文件
(5)创建Hibernate的SessionFactory类型
(6)通过SessionFactory对象创建Session实例
(7)通过创建Session实例进行持久化对象的管理
(8)通过创建Transaction实例进行事务管理
(9)通过创建Query或者Criteria实例实现数据库的查询


3.配置Hibernate
配置Hibernate主要就是创建Hibernate配置文件和SessionFactory类,Hibernate的配置文件可以是hibernate.properties或者
hibernate.cfg.xml(两者取其一),Hibernate.cfg.xml配置首选


































配置好hibernate.cfg.xml后,推荐保存在WEB-INF/classes下,接下来就可以创建SessionFactory了
package com.hephec.orm;


import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;


public class MySessionFactory{
//定义一个静态字符串变量存放Hibernate的配置文件名
private static String CONFIG_FILE_LOCATION="/hibernate.cfg.xml";
//创建一个线程局部变量对象
private static final ThreadLocal threadLocal=newThreadLocal();
//创建一个静态的Configuration对象
private static final Configuration cfg=new Configuration();
//定义一个静态的SessionFactory对象
private static org.hibernate.SessionFactory sessionFactory;
//取得一个当前的Session对象
private static Session currentSession() throws HibernateException{
Session session=(Session)threadLocal.get();
if(session==null){
if(sessionFactory==null){
try{
//根据配置文件,配置Hibernate
cfg.config(CONFIG_FILE_LOCATION);
//通过Configuration对象创建SessionFactory对象
SessionFactory=cfg.buildSessionFactory();
}
catch(Exeption e){
System.out.println("系统错误创建SessionFactory对象出错!");
e.printStackTrace();
}
}
//通过SessionFactory对象创建Session对象
session=sessionFactory.openSession();
threadLocal.set(session);


}
return session;
}
//关闭一个Session对象
public static void closeSession()throws HibernateException(){
Session session=(Session)threadLoal.get();
threadLocal.set(null);
if(session!=null){
session.close();
}
}
//构造方法
public MySessionFactory(){
}
}


调用Hibernate API 进行持久化操作
package com.hephec.service;


import org.hibernate.*;
import java.util.*;
import com.hephec.orm;


public class SystemPart{
//用户验证
public boolean userCheck(String loginName,String loginPass) throws Exception{
//创建一个Session对象
Session session=MySessionFactory.currentSession();
//定义一个Transaction对象
Transaction tx=null;
try{
List result=null;
//创建一个Query查询对象
Query query=session.createQuery("select a from Admin as a where a.username=:loginName and a.loginPass=:loginPass");
//设置查询参数值
query.setString("loginName",loginName);
query.setString("loginPass",loginPass);
//创建一个Transaction对象
Transaction tx=session.beginTransaction();
//执行查询,得到查询结果
result=query.list();
tx.commit();
if(result.size()>0)return true;
else return false;
catch(Exception e){
//事务回滚
if(tx!=null){
tx.rollback();
}
System.out.println("系统错误!");
e.printStackTrace();
return false;
}finally{
//关闭Session对象
session.close();
}
}
}


4.Hibernate映射配置文件






5.Hibernate会话管理
*/




/*
Hibernate的映射机制
1.Hibernate基本映射数据类型
2.Hibernate的主键映射
3.Hibernate的实体映射
4.映射一对一关联关系
5.映射多对一的单向关联关系
6.映射一对多的双向关联关系
7.映射一对多双向自身关联关系
8.映射多对多单向关联关系
9.映射多对多双向关联关系
10.映射组成关系
11.映射继承关系
12.Hibernate映射集合
*/


/*
使用Session的beginTransction()方法
使用Session的close()方法
使用Session的connection()方法
使用Session的delete()方法
使用Session的get()方法
使用Session的load()方法
使用Session的update()方法
使用Session的saveOrUpdate()方法
使用Hibernate的isInitalized()与initialize()方法
持久化对象的级联操作
*/


/*
Hibernate的检索策略
1.立即检索
2.延迟检索
3.迫切左外连接检索
*/


/*
HQL查询方法
1.基本查询
2.条件查询
3.分页查询
4.连接查询
5.子查询
6.动态实例化查询结果
*/


/*
QBC查询方式
1.基本查询
2.QBE查询
3.分页查询
4.复合查询
5.离线查询
*/


/*
本地SQL查询
*/


/*
Hibernate批量操作
1.批量插入
2.批量更新
3.批量删除
*/


/*
Hibernate的事务管理
1.事务边界声明
2.并发控制
3.悲观锁
4.乐观锁
*/


/*
Hibernate缓存机制
1.Hibernate的缓存分类
2.Hibernate的缓存范围
3.Hibernate的缓存管理
4.Hibernate二级缓存的并发访问策略
5.Hibernate的二级缓存配置
*/


/*
Hibernate应用的性能优化
*/


/*
多数据源的应用
*/


/*
JDBC应用
*/


/*
Hibernate调用存储过程
*/


/*
XML数据持久化
*/










































































본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

SpringBoot 프로젝트에 Hibernate를 통합하는 방법 SpringBoot 프로젝트에 Hibernate를 통합하는 방법 May 18, 2023 am 09:49 AM

SpringBoot 프로젝트 서문에 Hibernate 통합하기 Hibernate는 지속성 작업을 용이하게 하기 위해 Java 객체를 데이터베이스 테이블에 매핑할 수 있는 널리 사용되는 ORM(Object Relational Mapping) 프레임워크입니다. SpringBoot 프로젝트에서 Hibernate를 통합하면 데이터베이스 작업을 더 쉽게 수행하는 데 도움이 될 수 있습니다. 이 기사에서는 SpringBoot 프로젝트에 Hibernate를 통합하는 방법을 소개하고 해당 예제를 제공합니다. 1.종속성 소개pom.xml 파일에 다음 종속성을 소개합니다: org.springframework.bootspring-boot-starter-data-jpam

Java 오류: 최대 절전 모드 오류, 처리 및 방지 방법 Java 오류: 최대 절전 모드 오류, 처리 및 방지 방법 Jun 25, 2023 am 09:09 AM

Java는 소프트웨어 개발 분야에서 널리 사용되는 객체 지향 프로그래밍 언어입니다. Hibernate는 Java 객체의 지속성을 관리하는 간단하고 효율적인 방법을 제공하는 인기 있는 Java 지속성 프레임워크입니다. 그러나 개발 과정에서 Hibernate 오류가 자주 발생하며, 이러한 오류로 인해 프로그램이 비정상적으로 종료되거나 불안정해질 수 있습니다. Hibernate 오류를 처리하고 방지하는 방법은 Java 개발자가 숙달해야 하는 기술이 되었습니다. 이 기사에서는 몇 가지 일반적인 Hib를 소개합니다.

Java Hibernate에서 일대다 및 다대다 관계의 매핑 방법은 무엇입니까? Java Hibernate에서 일대다 및 다대다 관계의 매핑 방법은 무엇입니까? May 27, 2023 pm 05:06 PM

Hibernate의 일대다 및 다대다 Hibernate는 Java 애플리케이션과 관계형 데이터베이스 간의 데이터 액세스를 단순화하는 탁월한 ORM 프레임워크입니다. Hibernate에서는 복잡한 데이터 모델을 처리하기 위해 일대다 및 다대다 관계를 사용할 수 있습니다. Hibernate의 일대다 Hibernate에서 일대다 관계는 하나의 엔터티 클래스가 여러 개의 다른 엔터티 클래스에 대응한다는 것을 의미합니다. 예를 들어, 하나의 주문은 여러 주문 항목(OrderItem)에 해당할 수 있고, 사용자(User)는 여러 주문(Order)에 해당할 수 있습니다. Hibernate에서 일대다 관계를 구현하려면, 저장할 엔터티 클래스에 컬렉션 속성을 정의해야 합니다.

최대 절전 모드와 mybatis의 차이점은 무엇입니까 최대 절전 모드와 mybatis의 차이점은 무엇입니까 Jan 03, 2024 pm 03:35 PM

최대 절전 모드와 mybatis의 차이점: 1. 구현 방법 2. 성능 3. 개체 관리 비교 4. 캐싱 메커니즘 자세한 소개: 1. 구현 방법인 Hibernate는 객체를 데이터베이스 테이블에 매핑하는 완전한 객체/관계형 매핑 솔루션인 반면, MyBatis는 개발자가 SQL 문과 ResultMap을 수동으로 작성해야 합니다. 2. 성능, Hibernate는 개발 속도 측면에서 가능합니다. MyBatis는 Hibernate가 DAO 레이어 등을 단순화하기 때문입니다.

Java 언어로 된 Hibernate 프레임워크 소개 Java 언어로 된 Hibernate 프레임워크 소개 Jun 10, 2023 am 11:35 AM

Hibernate는 관계형 데이터베이스와 Java 프로그램 간의 데이터 매핑을 서로 바인딩하여 개발자가 데이터베이스의 데이터에 더 쉽게 액세스할 수 있도록 하는 오픈 소스 ORM 프레임워크입니다. Hibernate 프레임워크를 사용하면 SQL 문 작성 작업이 크게 줄어들고 애플리케이션의 개발 효율성과 재사용성이 향상됩니다. 다음과 같은 측면에서 Hibernate 프레임워크를 소개해보자. 1. Hibernate 프레임워크의 장점: 객체-관계형 매핑, 데이터베이스 액세스 세부 사항 숨기기, 개발 수행

Hibernate에서 대량 삽입 업데이트 작업을 수행하는 방법은 무엇입니까? Hibernate에서 대량 삽입 업데이트 작업을 수행하는 방법은 무엇입니까? Aug 27, 2023 pm 11:17 PM

이 기사에서는 Hibernate에서 대량 삽입/업데이트를 수행하는 방법을 살펴보겠습니다. SQL 문을 실행할 때마다 데이터베이스에 대한 네트워크 호출을 통해 이를 수행합니다. 이제 데이터베이스 테이블에 10개의 항목을 삽입해야 한다면 10개의 네트워크 호출을 수행해야 합니다. 대신 일괄 처리를 사용하여 네트워크 호출을 최적화할 수 있습니다. 일괄 처리를 통해 단일 네트워크 호출에서 일련의 SQL 문을 실행할 수 있습니다. 이를 이해하고 구현하기 위해 엔터티를 정의해 보겠습니다. @EntitypublicclassParent{@Id@GeneratedValue(strategy=GenerationType.AUTO)

Hibernate 2단계 캐시는 어떻게 작동하나요? Hibernate 2단계 캐시는 어떻게 작동하나요? Sep 14, 2023 pm 07:45 PM

캐싱은 쿼리를 실행할 때 데이터베이스 네트워크 호출을 줄이는 데 도움이 됩니다. 레벨 1 캐시 및 세션 연결. 암시적으로 구현됩니다. 첫 번째 수준 캐시는 세션 개체가 존재할 때까지 존재합니다. 세션 개체가 종료되거나 닫히면 캐시된 개체가 없습니다. 두 번째 수준 캐시는 여러 세션 개체에 대해 작동합니다. 세션 팩토리와 연결되어 있습니다. 두 번째 수준 캐시 개체는 단일 세션 팩터리를 사용하는 모든 세션에서 사용할 수 있습니다. 이러한 캐시 개체는 특정 세션 팩토리가 닫힐 때 종료됩니다. 두 번째 수준 캐시를 구현하려면 두 번째 수준 캐시를 사용하기 위해 다음 종속성을 추가해야 합니다. <!--https://mvnrepository.com/artifact/net.sf.ehcache/ehcache--><de

Java 프레임워크 기술 스택에 대한 심층적인 이해: Spring MVC, Hibernate, MyBatis 등과 같은 일반적인 Java 프레임워크를 탐색합니다. Java 프레임워크 기술 스택에 대한 심층적인 이해: Spring MVC, Hibernate, MyBatis 등과 같은 일반적인 Java 프레임워크를 탐색합니다. Dec 26, 2023 pm 12:50 PM

Java 프레임워크 기술 스택: SpringMVC, Hibernate, MyBatis 등 일반적으로 사용되는 Java 프레임워크를 소개합니다. Java가 지속적으로 개발됨에 따라 개발 프로세스를 단순화하기 위해 점점 더 많은 프레임워크가 개발되었습니다. 그 중 SpringMVC, Hibernate, MyBatis 등은 Java 개발에서 가장 일반적으로 사용되는 프레임워크 중 하나입니다. 이 기사에서는 독자가 이러한 프레임워크를 더 잘 이해하고 적용할 수 있도록 이러한 프레임워크의 기본 개념과 사용법을 소개합니다. 먼저 Sp를 소개하겠습니다.

See all articles