zoukankan      html  css  js  c++  java
  • Hibernate学习笔记一

    一、Hibernate的概述

    1.1 Hibernate框架的介绍

    • 什么是框架?

      所谓框架,就是封装好了一些功能,我们需要使用这些功能时,调用即可,不需要再手动的实现

    • Hibernate框架是什么?

      Hibernate是一个开放源代码的ORM(Object Relation Mapping,对象关系映射)框架,它对JDBC进行了轻量级的对象封装。使得Java开发人员可以使用面向对象的编程思想来操作数据库。

      类似于C#中的Entity FrameWork

      简单理解,就是帮我们操作数据库的框架

      操作数据库:JDBC---->DBUtils---->Hibernate

    • 使用Hibernate的好处?

      操作数据库的时候,可以面向对象的方式来完成,不需要书写SQL语句

    • Hibernate框架是一个ORM框架

      所谓的ORM就是利用描述对象数据库表之间映射的元数据,自动把java应用程序中的对象,持久化到关系型数据库的表中。通过操作java对象,就可以完成对数据库表的操作。可以把ORM理解为关系型数据和对象的一个纽带,开发人员只需要关注纽带一端的映射对象即可。

    1.2 Hibernate框架的搭建

    Hibernate框架的搭建步骤:

    • 下载Hibernate5开发包,导入需要的jar包

    • 创建数据库,准备表,实体

    • 书写ORM元数据(对象与表的映射的配置文件)

      • 导入约束

        • 核心配置文件的xml建议放在src下,命名为hibernate.cfg.xml

        • 映射文件的xml建议放在src/domain下,命名为类名.hbm.xml

      • 实体

    • 书写配置文件

    • 书写代码测试

    1.2.1 约束

    • 导入的约束类型有两种:

      • 一种是核心配置文件的约束文件

      • 一种是映射文件的约束文件

    • 约束类文件

      约束类文件类型的后缀是.dtd的,dtd 是一套关于标记符的语法规则。它是XML1.0版规格得一部分,是XML文件的验证机制,属于XML文件组成的一部分。dtd 是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和dtd文件来看文档是否符合规范,元素和标签使用是否正确。

      一个dtd文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。XML文件提供应用程序一个数据交换的格式,dtd正是让XML文件能够成为数据交换的标准,因为不同的公司只需定义好标准的dtd,各公司都能够依照dtd建立XML文件,并且进行验证,如此就可以轻易的建立标准和交换数据,这样满足了网络共享和数据交互。

    • 导入约束的目的:

      说的直白点就是为了检验编码者的代码是否合乎编写的规则;

    1.2.2 导入约束的步骤

    • 有网的情况下:

      第一步:复制相应的约束版本和下载网址

      操作顺序是:在项目中的:Referenced Libraries --> hibernate-core-5.0.7.Final.jar --> org.hibernate 文件下的如图所示的两个dtd文件(在此文件夹最下方)

      hibernate-configuration-3.0.dtd是核心配置文件的约束文件,hibernate-mapping-3.0.dtd是映射文件的约束文件

      第二步:将下面的两项复制粘贴到约束导入框内:(hibernate-configuration-3.0.dtd为例)

      操作顺序是:eclipse ---> window ----> preferences -----> xml ----> xml Catalog

      再添加网址

    • 在无网的情况下

      没有网的情况下也可以导入使用约束,导入的前提是你有相应的hibernate-mapping-3.0.dtd和hibernate-onfiguration-3.0.dtd这两个文件
      第一步:复制相应的约束文件下载网址(hibernate-mapping-3.0.dtd为例)

      第二步:将复制的内容,添加到xml文件内

      第三步:添加信息到约束导入框

      前面的顺序相同,只是在导入dtd文件的方式不一样,如果dtd在项目中存在,选择WorkSpace,如果文件存在磁盘上,选择File System

    1.2.3 创建实体(持久化类)

    持久化是指类的对象能够被持久化保存到数据库中。Hibernate使用普通的java对象(Plain Old Java Object),即POJO的编程模式进行持久化。POJO类中包含的是与数据库表相对应的各个属性,这些属性通过getter和setter方法访问,对外部隐藏内部的实现细节。

    下面创建实体类Customer(对应数据库表cst_customer),Customer类包含与cst_customer数据表字段对应得属性,以及相应得get/set方法。

    1.2.4 准备ORM元数据

    映射文件内容配置:(已导入映射文件的约束)

    Hibernate需要知道实体类Customer映射到数据库中的哪张表,以及类中的哪个属性对应数据库表中的哪个字段,这些是需要在映射文件中配置。

    在实体类Customer所在的包中,创建一个名称为Customer.hbm.xml的映射文件,在该文件内定义Customer的属性是如何映射到cst_customer表的列上的。

    标签属性说明:

    • 用来创建类和表的映射:<class></class>

      • name属性:类中的全路径,包名可以放在的Package属性内,可以减少路径的书写

      • table属性:表名(如果类名和表名是一致的,table属性可以省略)

      • catalog属性:数据库名称,可以省略

    • 用来创建类中的属性与表中的主键字段对应:<id></id>

      • name属性:类中的属性名

      • column属性:表中字段名(如果类中的属性名和表中的字段名一致,可以省略)

      • length属性:字段的长度

      • type属性:类型。写java数据类型,Hibernate数据类型(默认),SQL类型

    • 用来设置主键策略:<generator></generator>

    • 用来创建类中的普通属性与表中字段对应:<property></property>

      • name属性:类中的属性名

      • column属性:表中字段名(如果类中的属性名和表中的字段名一致,可以省略)

      • length属性:字段的长度

      • type属性:类型。写java数据类型,Hibernate数据类型(默认),SQL类型

    核心文件内容配置:(已导入核心配置文件的约束)

    ​Hibernate的映射文件反映了持久化类和数据库表的映射信息,而Hibernate的配置文件则主要用来配置数据库连接以及Hibernate运行时所需要得各个属性得值。在src下创建下一个名为hibernate.cfg.xml(默认名称),发布后,会在项目的WEB-INF/classes路径下。

    ​Hibernate的配置文件也可以是properties属性文件格式的配置文件,它使用键值对的形式存放信息,默认文件名称:hibernate.properties。

    核心配置文件内,<session-factory></session-factory>的作用是创建<session>对象的,<session>是hibernate中操作数据库的核心对象,<session-factory>必须包含三部分内容:

    • 第一部分:连接数据库的信息

    • 第二部分:hibernate的可选配置

    • 第三部分:映射文件的位置

    连接数据库的信息可以在hibernate的开发包中找到,查找步骤:开发包----->project----->etc---->hibernate.properties中查找:

    hibernate的可选配置也可以在hibernate.properties中找到,简单配置文件的作用:

    • 是否显示hibernate生成的SQL语句

      <property name="hibernate.show_sql">true</property>

    • 是否格式化输出SQL语句到控制台

      <property name="hibernate.format_sql">true</property>

    • 配置hibernate采用何种方式生成DDL语句

    <property name="hibernate.hbm2ddl.auto">update</property>

    • none:不用Hibernate自动生成表

    • create:每次都会创建一个新的表

    • create-drop:每个都会创建一个新的表,程序执行结束后删除这个表

    • update:如果数据库中有表,使用原来的表,如果没有表,创建一个新表,可以更新表结构

    • validate:只会使用原来的表。对映射关系进行校验

    • 设置映射文件的位置,也可以在代码中设置

      <mapping resource=""/>

    1.2.5 测试

    步骤分析:

    1. 解析主配置文件

    2. 根据配置文件创建SessionFactory

    3. 根据SessionFactory创建Session

    4. 开启事务

    5. 执行操作

    6. 提交事务

    7. 释放资源

    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    import org.junit.Test;
    import domain.Customer;
    
    public class HibernateDemo1 {
    	
    	@Test
    	public void test1() {
    		//1. 解析主配置文件
    		Configuration cfg = new Configuration();
    		cfg.configure();
    		
    		//2.  根据配置文件创建SessionFactory
    		SessionFactory factory = cfg.buildSessionFactory();
    		
    		//3.  根据SessionFactory创建Session
    		Session session = factory.openSession();
    		
    		//4.  开启事务
    		Transaction tx = session.beginTransaction();
    		
    		//5.  执行操作
    		Customer cust = new Customer();
    		cust.setCustName("chenia");
    		session.save(cust);
    		
    		//6.  提交事务
    		tx.commit();
    		
    		//7.  释放资源
    		session.close();
    		factory.close();
    	}
    }
    
  • 相关阅读:
    bash task list and interrupt
    bash字符串大小写转换方法
    Spectrum Mask
    OFDM中CP的优缺点
    模块边界使用寄存器来做数据的交互
    跨时钟域信号处理
    FPGA中一个Slice所含资源
    Verilog中if-else改写成case的方法
    同步序列的自相关与互相关
    TCP三次握手四次挥手
  • 原文地址:https://www.cnblogs.com/chenia/p/13261714.html
Copyright © 2011-2022 走看看