`

第1章 hibernate入门【hibernate部分】

阅读更多

1.为什么要学习hibernate?

根据与JDBC的对比学习,了解到JDBC开发效率低、代码冗余、重复性工作多,而hibernate简化了JDBC 繁琐的编码, JDBC访问数据库的代码做了封装,提高了开发效率。

Hibernate 是一个优秀的Java 持久化层解决方案;是当今主流的对象关系映射(ORM)工具; Hibernate 将数据库的连接信息都存放在配置文件中。

2. Hibernate是什么?

Hibernate是一种ORM工具,是连接java应用程序和关系数据库的中间件,这是对JDBC的封装,主要负责java对象的持久化

3.在哪里会用到hibernate?         

 

4. Hibernate怎么用?

    1). 前期准备?

         a. 下载需要的jar

                 Hibernate 的官方主页是www.hibernate.org

             推荐下载hibernate-distribution-3.3.2.GA-dist.zip

                 详细下载步骤参看《hibernate的下载步骤图.xls

 

            b.  Hibernate包目录结构

       

   c. 部署jar

             hibernate3.jar

                 required 目录下的jar

                 Oracle 数据库驱动jar

 

         d. 编写配置文件、映射文件及POJO类

             配置文件与映射文件的使用要求:会改写源码中提供的配置文件与映射文件。

             可到下面所示结构中去查找文件拷贝到自己的项目中并修改

            1) hibernate-distribution-3.3.2.GA\project\tutorials\web\src\main\resources   

                    

             2….\org\hibernate\tutorial\domain

    

              可以使用提供的模板文件, 自己根据需要对应的做修改即可。

              hibernate.hbm.xml文件

 

  <?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
	    <!-- 指定不同类型的数据库  -->
		<property name="dialect">
			org.hibernate.dialect.Oracle9Dialect
		</property>
		 <!-- 数据库连接的url  -->
		<property name="connection.url">
			jdbc:oracle:thin:@localhost:1521:orcl
		</property>
		<!-- 用户名  -->
		<property name="connection.username">test</property>
		<!-- 密码  -->
		<property name="connection.password">test</property>
		<!-- 数据库驱动  -->
		<property name="connection.driver_class">
			oracle.jdbc.driver.OracleDriver
		</property>
		<!-- 在控制台显示操作的sql语句  -->
		<property name="show_sql">true</property>
		<!-- 配置映射文件  -->
		<mapping resource="bean/Person.hbm.xml" />
	</session-factory>
</hibernate-configuration>

   创建POJO   

public class Type implements java.io.Serializable {
	// Fields
	private Integer id = 0;
	private String name = "";
	// Constructors
	public Type() {
	}
        省略 setter和getter
}
 

2). 使用Hibernate实现对数据库增、删、改操作的步骤?         

 

Configuration conf = null;
SessionFactory sessionFactory = null;
Session session = null;
Transaction tx = null;
try {
        //1. 读取并解析配置文件
        conf = new Configuration().configure();
        //2. 读取并解析映射信息,创建SessionFactory
        sessionFactory = conf.buildSessionFactory(); 
        //3. 打开Session
        session = sessionFactory.openSession();  
        //4. 开始一个事务(增删改操作必须,查询操作可选)
         tx = session.beginTransaction();  
         //5. 数据库操作
         session.save(user); 
         //6. 提交事务
         tx.commit(); 
} catch (HibernateException e) {
         //6. 回滚事务
         tx.rollback(); 
         e.printStackTrace();
} finally{
         //7. 关闭session, sessionFactory
         session.close();  
         sessionFactory.close();
}

  3). 重要术语的解释

        ORMObject Relational Mapping     对象关系的映射

        POJO:plain ordinary java object     普通的JAVA对象

  4). Hibernate6个核心接口:

     分别为:Configuration、SessionFactorySessionTransactionQueryCriteria

     这6个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。          下面对这6个核心接口分别加以介绍:

        a) Configuration接口: 

Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中, Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。

b) SessionFactory接口: 

SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

c) Session接口: 

Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句)。但需要注意的是Session对象是非线程安全的。同时Hibernate的session不同于JSP应用中的HttpSession。这里当用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。

d) Transaction接口:

Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。

e) Query和Criteria接口:

Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。

 5).   根据POJO类和映射文件自动生成数据库表:

import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
public class TestExport {
	public static void main(String[] args) {
		//读取配置文件
		Configuration config = new Configuration().configure();		
		SchemaExport exp = new SchemaExport(config);
		//第一参数为true:就是把DDL语句输出到控制台
		//第二个参数为true:根据持久化类和映射文件先持行删除再执行创建操作
		exp.create(true, true);
	}
}

 

6). get 和 load 方法的作用:

     Object  get (Class clazz, Serializable id):通过实体类Class对象和ID加载数据

     Object  load(Class clazz, Serializable id):通过实体类Class对象和ID加载数据

7). 使用get和load加载数据的区别?

     当我们使用Session的get方法的时候,如果加载的数据不存在,get方法会返回一个null对象, 但是如果使用的是

     load方法,要加载的数据不存在,系统就会抛出异常,这就是get和load的区别之一。

8). 实体对象的三种状态?

     ①.瞬时状态(Transient)

     ②.刚用new语句创建,还没有被持久化,且不处于Session的缓存中

     ③.持久状态(Persistent)

     ④.已经被持久化,且加入到Session的缓存中

     ⑤.游离状态(Detached)

     ⑥.已经被持久化,但不再处于Session的缓存中

  • 大小: 36.6 KB
  • 大小: 18.5 KB
  • 大小: 9.6 KB
  • 大小: 6.2 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Hibernate 手册 第一章 Hibernate入门

    《Hibernate 手册 第一章 Hibernate入门》 Hibernate 是一个开放源码的Java持久化框架,它为Java开发者提供了一种对象关系映射工具来管理Java应用中的关系数据。本章将带你逐步走进Hibernate的世界,了解其基本概念...

    hibernate入门--第一个实例

    【hibernate入门--第一个实例】 Hibernate 是一个强大的对象关系映射(ORM)框架,它为Java开发者提供了方便的数据持久化服务。通过使用Hibernate,我们可以将数据库操作转换为对Java对象的操作,从而简化了数据库...

    Hibernate入门(代码+笔记)

    **第一部分:Hibernate入门** 这部分主要介绍了Hibernate的基本概念和安装配置。Hibernate基于Java Persistence API(JPA),它提供了对象关系映射(ORM)功能,将Java类映射到数据库表。首先,你需要下载Hibernate...

    hibernate入门小例子

    【hibernate入门小例子】是一个适合初学者的教程,主要涵盖了如何在JavaWeb项目中使用Hibernate框架与MySQL数据库进行集成。在这个例子中,我们将会深入理解Hibernate的核心概念,包括实体映射、对象关系映射(ORM)...

    第四章-Hibernate.ppt

    MVC设计模式的基本概念 Struts2框架的基本概念与工作原理 Struts2的安装和配置 Struts2的类型转换与输入校验 Struts2标签库 Struts2拦截器

    hibernate入门

    Hibernate 提供了两级缓存:第一级缓存是Session级别的,自动管理;第二级缓存可配置为应用程序范围,如EhCache、Infinispan等。 ### 十、实体关系映射 Hibernate 支持多种对象关系映射,如一对一、一对多、多对一...

    hibernate入门数据简单插入

    "hibernate_week01_01"可能是某个课程或教程的命名格式,其中"week01"可能代表课程的第一周,"01"可能是该周的第一个主题。这个文件可能包含了关于Hibernate入门的初步讲解,包括基本概念、环境配置、简单数据插入的...

    hibernate3入门

    **基础入门**部分主要介绍如何快速了解Hibernate的核心元素,以及其基础语法、配置等相关概念。 ##### O/R 映射入门 - **第一个Hibernate程序**:最简单的示例是将一个Java对象映射到数据库中的一个表。这通常涉及...

    hibernate入门小程序

    **hibernate入门小程序** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了方便的数据持久化服务,使得开发人员可以使用面向对象的方式来操作数据库,而无需过多地关注SQL语句的编写。在...

    hibernate快速入门

    Hibernate 提供了第一级缓存(Session缓存)和第二级缓存,提高数据访问速度。可以通过配置启用二级缓存,并选择合适的缓存提供商,如Ehcache。 ## 九、实体关系映射(E-R Mapping) 1. **一对一(OneToOne)**:...

    最经典的hibernate教程_从入门到精通_第一篇

    最经典的hibernate教程_从入门到精通_第一篇

    hibernate入门的第一次代码

    【hibernate入门的第一次代码】是一个针对初学者的指南,旨在帮助他们了解并开始使用Hibernate框架。Hibernate是一个流行的开源对象关系映射(ORM)工具,它允许Java开发者以面向对象的方式操作数据库,减少了手动...

    hibernate第一个hibernate

    《Hibernate入门:初识与实践》 在Java开发领域,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本教程将带领初学者深入理解Hibernate的第一个项目,帮助你快速入门并掌握其核心概念。...

    webwork+spring+hibernate入门实例

    《webwork+spring+hibernate入门实例》 在当今的Web开发领域,Spring、Hibernate和WebWork(现称为Struts 2)是三个极为重要的框架。本实例将引导初学者深入理解这三大框架的集成与应用,以及如何与MySQL数据库进行...

    hibernate入门学习笔记+源码

    1. **缓存机制**: 第一级缓存(Session级别的缓存)和第二级缓存(SessionFactory级别的缓存),减少数据库访问。 2. **批处理**: 批量插入、更新,提高数据库操作效率。 3. **延迟加载(Lazy Loading)**: 只在需要...

    hibernate hellowrold入门级代码

    【hibernate helloworld入门级代码】是针对初学者的一个简单示例,旨在帮助理解Hibernate这一流行的Java对象关系映射(ORM)框架的基本用法。在这个项目中,我们将探讨Hibernate如何将Java对象与数据库中的记录关联...

    最经典的hibernate教程_从入门到精通_第1篇(共四篇).ppt

    最经典的hibernate教程_从入门到精通_第1篇(共四篇).ppt

Global site tag (gtag.js) - Google Analytics