Hibernate是一个开放源代码的对象关系映射框架,它将POJO与数据库表之间建立映射关系。是全自动的ORM框架,可以自动生成SQL语句并自动执行。它对JDBC进行了非常轻量级的封装,使程序员可以随心所欲地以操作对象的编程思维操作数据库。

  ORM :对象关系模型。O指面向对象领域的JavaBean,R指关系数据库领域的Relational(数据库表结构),M指映射Mapping(XML的配置文件)。

技术分析之Hibernate的快速入门:

    第一步:下载Hibernate5的运行环境**

      1. 下载相应的jar包等
               http://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/hibernate-release-5.0.7.Final.zip/download    
    
              2. 解压后对目录结构有一定的了解

    第二步:创建表结构

    Create database hibernate_day01;
              Use hibernate_day01;
              CREATE TABLE `cst_customer` (
          `cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)',
          `cust_name` varchar(32) NOT NULL COMMENT '客户名称(公司名称)',
          `cust_user_id` bigint(32) DEFAULT NULL COMMENT '负责人id',
          `cust_create_id` bigint(32) DEFAULT NULL COMMENT '创建人id',
          `cust_source` varchar(32) DEFAULT NULL COMMENT '客户信息来源',
          `cust_industry` varchar(32) DEFAULT NULL COMMENT '客户所属行业',
          `cust_level` varchar(32) DEFAULT NULL COMMENT '客户级别',
          `cust_linkman` varchar(64) DEFAULT NULL COMMENT '联系人',
          `cust_phone` varchar(64) DEFAULT NULL COMMENT '固定电话',
          `cust_mobile` varchar(16) DEFAULT NULL COMMENT '移动电话',
          PRIMARY KEY (`cust_id`)
        ) ENGINE=InnoDB AUTO_INCREMENT=94 DEFAULT CHARSET=utf8;

    第三步:搭建Hibernate的开发环境

    1. 创建WEB工程,引入Hibernate开发所需要的jar包
        * MySQL的驱动jar包
        * Hibernate开发需要的jar包(资料/hibernate-release-5.0.7.Final/lib/required/所有jar包)
        * 日志jar包(资料/jar包/log4j/所有jar包)

    第四步:编写Java实体类

    1. Customer类的代码如下:
        public class Customer {
            private Long cust_id;
            private String cust_name;
            private Long cust_user_id;
            private Long cust_create_id;
            private String cust_source;
            private String cust_industry;
            private String cust_level;
            private String cust_linkman;
            private String cust_phone;
            private String cust_mobile;
            // 省略get和set方法
        }

   **第五步:创建类与表结构的映射**
    
    1. 在JavaBean所在的包下创建映射的配置文件
        * 默认的命名规则为:实体类名.hbm.xml
        * 在xml配置文件中引入约束(引入的是hibernate3.0的dtd约束,不要引入4的约束)
            <!DOCTYPE hibernate-mapping PUBLIC 
                "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    
    2. 如果不能上网,编写配置文件是没有提示的,需要自己来配置
        * 先复制http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd --> window --> preferences --> 搜索xml --> 选择xml catalog --> 点击add --> 现在URI --> 粘贴复制的地址 --> 选择location,选择本地的DTD的路径
    
    3. 编写映射的配置文件
        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE hibernate-mapping PUBLIC 
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
        
        <hibernate-mapping>
            <class name="com.itheima.domain.Customer" table="cst_customer">
                <id name="cust_id" column="cust_id">
                    <generator class="native"/>
                </id>
                <property name="cust_name" column="cust_name"/>
                <property name="cust_user_id" column="cust_user_id"/>
                <property name="cust_create_id" column="cust_create_id"/>
                <property name="cust_source" column="cust_source"/>
                <property name="cust_industry" column="cust_industry"/>
                <property name="cust_level" column="cust_level"/>
                <property name="cust_linkman" column="cust_linkman"/>
                <property name="cust_phone" column="cust_phone"/>
                <property name="cust_mobile" column="cust_mobile"/>
            </class>
        </hibernate-mapping>
     

    **第六步:编写Hibernate核心的配置文件**
    
    1. 在src目录下,创建名称为hibernate.cfg.xml的配置文件
    2. 在XML中引入DTD约束
        <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    
    3. 打开:资料/hibernate-release-5.0.7.Final/project/etc/hibernate.properties,可以查看具体的配置信息    
        * 必须配置的4大参数                    
            #hibernate.connection.driver_class com.mysql.jdbc.Driver
            #hibernate.connection.url jdbc:mysql:///test
            #hibernate.connection.username gavin
            #hibernate.connection.password
        
        * 数据库的方言(必须配置的)
            #hibernate.dialect org.hibernate.dialect.MySQLDialect
        
        * 可选的配置
            #hibernate.show_sql true
            #hibernate.format_sql true
            #hibernate.hbm2ddl.auto update
        
        * 引入映射配置文件(一定要注意,要引入映射文件,框架需要加载映射文件)
            * <mapping resource="com/itheima/domain/Customer.hbm.xml"/>                
    
    4. 具体的配置如下
        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
        
        <hibernate-configuration>
            <session-factory>
                <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
                <property name="hibernate.connection.url">jdbc:mysql:///hibernate_day01</property>
                <property name="hibernate.connection.username">root</property>
                <property name="hibernate.connection.password">root</property>
                <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
                
                <mapping resource="com/itheima/domain/Customer.hbm.xml"/>
            </session-factory>
        </hibernate-configuration>

----------

**第七步:编写Hibernate入门代码**

1. 具体的代码如下
        /**
         * 测试保存客户
         */
        @Test
        public void testSave(){
            // 先加载配置文件
            Configuration config = new Configuration();
            // 默认加载src目录下的配置文件
            config.configure();
            // 创建SessionFactory对象
            SessionFactory factory = config.buildSessionFactory();
            // 创建session对象
            Session session = factory.openSession();
            // 开启事务
            Transaction tr = session.beginTransaction();
            // 编写保存代码
            Customer c = new Customer();
            // c.setCust_id(cust_id);    已经自动递增
            c.setCust_name("测试名称");
            c.setCust_mobile("110");
            // 保存客户
            session.save(c);
            // 提交事务
            tr.commit();
            // 释放资源
            session.close();
            factory.close();
        }

Hibernate基础入门的更多相关文章

  1. Hibernate 基础入门

    概述: JDBC:将java和数据库连接的驱动程序加载到项目中,在代码里面,注册驱动,创建链接,创建satement对象,发送并执行sql之类,关闭连接. hibernate :数据持久化一个框架,对 ...

  2. Hibernate基础入门2

    HQL与Criteria HQL(Hibernate Query Language)-官方推荐面向对象的查询语言,与SQL不同,HQL中的对象名是区分大小写的(除了JAVA类和属性其他部分不区分大小写 ...

  3. Hibernate入门1. Hibernate基础知识入门

    Hibernate入门1. Hibernate基础知识入门 20131127 前言: 之前学习过Spring框架的知识,但是不要以为自己就可以说掌握了Spring框架了.这样一个庞大的Spring架构 ...

  4. 【hibernate】<第一节>hibernate简单入门

    所需工具: ide:eclipse or myeclipse jdk:1.7 jar包:hibernate-distribution-3.6.0.Final 和对应mysql的驱动类(对应jar包如图 ...

  5. hibernate基础(1)

    hibernate基础1.hibernate介绍与动手入门体验  问题:模型不匹配(java对象模型与数据库关系模型不匹配)  解决: 1.使用JDBC手工转换        2.使用ORM(Obje ...

  6. Hibernate从入门到精通(五)一对一单向关联映射

    上次的博文中Hibernate从入门到精通(四)基本映射我们已经讲解了一下基本映射和相关概念,接下来我们会讲稍微复杂点的映射——关系映射. 关系映射分类 关系映射即在基本映射的基础上处理多个相关对象和 ...

  7. [置顶] Hibernate从入门到精通(五)一对一单向关联映射

    上次的博文中Hibernate从入门到精通(四)基本映射我们已经讲解了一下基本映射和相关概念,接下来我们会讲稍微复杂点的映射——关系映射. 关系映射分类 关系映射即在基本映射的基础上处理多个相关对象和 ...

  8. Cloudera Manager、CDH零基础入门、线路指导 http://www.aboutyun.com/thread-9219-1-1.html (出处: about云开发)

    Cloudera Manager.CDH零基础入门.线路指导http://www.aboutyun.com/thread-9219-1-1.html(出处: about云开发) 问题导读:1.什么是c ...

  9. Hibernate 框架入门

    接着上一篇的 Hibernate 框架的了解,我们就继续学习 Hibernate 框架.这次就进入 Hibernate 框架的入门学习. 首先在学习 Hibernate 框架之前,我们要准备好我们需要 ...

随机推荐

  1. 浮动的补充丶文本和字体属性丶background丶定位

    一丶浮动的补充 浮动的特性: 1. 浮动的元素脱标 2.浮动的元素互相贴靠 3.浮动的元素有"字围"效果 4.浮动的元素有收缩的效果 前提是标准文档流,margin的垂直方向会出现 ...

  2. C# 使用Guid类生成不重复的随机数

    什么是Guid GUID(全局唯一标识符)         全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID ...

  3. 如何在 Maven 工程中引入其他jar包 并生效?(以 Netty 为例)

    1.到 Maven 官网  查找 相关 框架 https://mvnrepository.com/artifact/io.netty/netty-all/4.1.32.Final 2.把相关 Xml体 ...

  4. Linux入门-1 常用命令

    写在前面 当年初学Linux的时候,在网上找到nash_su大神的一套视频,讲的特别好,基础部分看了好几遍,很多知识点让我受益至今. 十分庆幸当年的选择,也十分感谢nash_su大神,祝你事事顺心,每 ...

  5. cocos2d-x 3.1 编译脚本android-build.py

    写在前面: 前段时间下载了cocos2d-x 3.1,按照官网的教程,配置环境,编译打包,走了一遍,感觉不错,顺便发现其中用了很多python的脚本文件,比如今天要说的android-build.py ...

  6. ssh_exchange_identification: Connection closed by remote host

    用服务器内网ip连接同子网服务器的时候显示ssh_exchange_identification: Connection closed by remote host 防火墙什么都关闭了,还是显示这个问 ...

  7. OC基础数据类型-NSDictionary

    1.字典NSDictionary 字典与数组的区别:数组讲究顺序,而字典可以快速帮助我们找到数据,数据是我们的目的,键是我们的手段 NSDictionary *dict = [[NSDictionar ...

  8. python实现读取类别频数数据画水平条形图

    1.数据分组-->频数分布表 环境配置: import pandas as pd import numpy as np import matplotlib.pyplot as plt 按照你设定 ...

  9. 在自己机器上实现apache的多域名

    自己机器上有3个目录,分别是/var/www/html/                             /var/www/solaris/                           ...

  10. 019sys模块

    为了和python解释器交互,控制台执行脚本后面添加变量 import  sysprint(sys.argv) def  post():    print('upload')def  download ...