首页 > 代码库 > Hibernate介绍和入门案例

Hibernate介绍和入门案例

  一身转战三千里,一剑曾当百万师

  如果你在之前没有学过SSH三大框架,那么你之前肯定是通过JDBC来对数据库进行操作.现在,你完全可以把跟数据库交互的操作直接交给Hibernate.

  Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的 orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命 意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

  Hibernate是一个持久层的ORM框架。(ORM:Object Relational Mapping。对象关系映射。开发语言用的是Java,面向对象的(Object)。使用的数据库是关系型数据库(Relational)。就是将对象与数据库中的表建立一种映射关系,操作对象就可以操作这个表。)

  了解了hibernate之后,是不是很期待呢?OK,我们来做一个Hibernate入门案例.

  第一步:下载Hibernate开发包.下载地址:https://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/

  第二步:下载完成并解压后你可以看到如下目录:

技术分享

  第三步:接下来,进入eclipse创建web项目,并且引入必要的jar包,jar包在上面的lib/required目录下

技术分享

同时,还需要 数据库驱动包 和 日志记录的包 ,一个入门案例的完整项目的jar包如下图:

技术分享

  第四步:然后就是创建数据库和表了,

建库:

CREATE DATABASE hibernate      

建表:

CREATE TABLE `cst_customer` (

  `cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT ‘客户编号(主键)‘,

  `cust_name` varchar(32) NOT NULL COMMENT ‘客户名称(公司名称)‘,

  `cust_source` varchar(32) DEFAULT NULL COMMENT ‘客户信息来源‘,

  `cust_industry` varchar(32) DEFAULT NULL COMMENT ‘客户所属行业‘,

  `cust_level` varchar(32) 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=1 DEFAULT CHARSET=utf8;

  第五步:根据数据库的表建实体类并生成get和set方法

public class Customer {

    private Long cust_id;

    private String cust_name;

    private String cust_source;

    private String cust_industry;

    private String cust_level;

    private String cust_phone;

    private String cust_mobile;

    //生成对应的get和set方法

}

  第六步:创建映射,映射文件通常有一个命名规则:类名.hbm.xml,映射文件放在和实体类同一个目录下.创建映射文件首先要引入约束,这段代码不用写,到如下图的位置复制过来:

打开Java Resources/Libraries/Web App Libraries

技术分享

 打开hibernate-core-5.0.7.Final.jar/org.hibernate

技术分享

在最下面找到并打开hibernate-configuration-3.0.dtd

技术分享

复制如下面这段

技术分享

接下来的配置看图:

技术分享

如果在写配置文件的时没网并且没有提示的时候,那需要配置相关文件:

复制约束中的最后一段到浏览器打开,就会自动下载一个dtd文件.

然后在eclipse中首选项里找到如下图:key是约束最后的一段,location是你刚下载的dtd文件的路径,配置好了之后在没网的情况下就会有提示了,如果还没有就重启一下.

技术分享

 

   第七步:在src的目录下创建Hibernate的核心配置文件:

<?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</property>

      <!-- 配置连接数据库的用户名和密码-->

        <property name="hibernate.connection.username">root</property>

        <property name="hibernate.connection.password">123</property>

       

        <!-- 数据库的方言:根据底层的数据库生成不同的SQL -->

        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

        <!-- 配置显示SQL -->

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

        <!-- 配置格式化SQL -->

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

        <!-- 配置hbm2ddl  

        hibernate.hbm2ddl.auto有几个取值

        * none          :不使用映射转成DDL。

        * create            :如果原来有表将原有的表删除。每次都会新创建一个表。测试的时候使用。

        * create-drop   :如果原来有表将原有的表删除。每次都会新创建一个表。执行完操作以后会将表删除掉。测试的时候使用。

        * update            :如果数据库中有表使用原来的表。如果没有表会创建一个表。而且可以更新原有表结构。

        * validate      :不会创建表。校验映射和表结构是否正确

   -->

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

       

        <!-- 加载映射文件 -->

        <mapping resource="com/hibernate/domain/Customer.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

 

第八步:编写测试方法

public class HibernateDemo1 {

    @Test

    /**

     * 保存操作

     */

    public void demo1(){

        // 加载Hibernate的核心配置文件.

        Configuration configuration = new Configuration().configure();

        // 创建一个SessionFactory的对象.

        SessionFactory sessionFactory = configuration.buildSessionFactory();

        // 创建Session(相当于JDBC中的Connection)

        Session session = sessionFactory.openSession();

        // 开启事务:

        Transaction transaction = session.beginTransaction();

        // 完成操作:

        Customer customer = new Customer();

        customer.setCust_name("某某某");

    //保存的方法

        session.save(customer);

        // 提交事务

        transaction.commit();

        // 释放资源

        session.close();

    }

}

执行方法,就可以在数据库添加记录了.......

技术分享

到此为止,你已经入门了hibernate.加油吧.明天会更好.

Hibernate介绍和入门案例