MyEclipse10下实现Hibernate框架

MyEclipse10下实现Hibernate框架

目录

MyEclipse10下使用Hibernate框架实例... 1

第1节         什么是Hibernate. 1

第2节         什么是ORM... 1

第3节         Hibernate快速入门... 1

第一步:下载Hibernate. 1

第二步:创建数据库与表... 2

第三步创建实体类... 4

第四步导入Hibernate框架相关依赖jar包... 4

第五步Hibernate的相关配置文件... 5

第六步设置映射配置文件... 6

第七步设置核心配置文件... 7

第八步Hibernate快速入门开发测试... 8

第4节         Hibernate执行原理总结... 12

第5节         遇到的问题与解决... 12

 

 

 

 

  1. 什么是Hibernate

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

从中,我们可以得出这样的结论:Hibernate是一个轻量级的JDBC封装,也就是说,我们可以使用Hibernate来完成原来我们使用JDBC完成的操作,也就是与数据库的交互操作。它是在dao层去使用的。

  1. 什么是ORM

         对象关系映射(Object Relation Mapping,简称ORM,或O/RM),一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。

         对象-关系映射,是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。
ORM模型的简单性简化了数据库查询过程。使用ORM查询工具,用户可以访问期望数据,而不必理解数据库的底层结构。

       简单来说,我们使用ORM可以将我们的对象(或类)去进行映射,使得我们可以去操作对象就能完成对表的操作。

  1. Hibernate快速入门

         介绍完Hibernate轻量级框架以后,接下来我们用一个实例来对Hibernate有一个直观的了解(在这之前,希望大家能够简单的了解下JDBC)。

第一步:下载Hibernate

下载链接:http://hibernate.org/orm/releases/5.3/#get-it

mySqlJAR驱动包+Navicat+mySql:https://pan.baidu.com/s/1w3FIeesc1INIu-WYJBexGA

密码;nu82

我下载的版本是:

解压缩以后,我们可以看到该目录结构:

MyEclipse10下实现Hibernate框架_第1张图片

图:Hibernate目录结构

 

其中,在lib/required目录下,包含运行Hibernate项目必须的jar包有:

MyEclipse10下实现Hibernate框架_第2张图片

图:Hibernate所在需要的JAR包

第二步:创建数据库与表

         Hibernate是一个轻量级的JDBC封装,也就是说我们可以使用Hibernate来完成原来我们使用JDBC完成的操作,也就是数据的交互操作。

         接着我们创建一个测试库和测试表。

         在测试样例中,我使用的mySql,并用的是Navicat for MySql可视化操作工具。

MyEclipse10下实现Hibernate框架_第3张图片

图:Navicat for MySql界面

         接着我们点击左上角的连接,新建一个新建一个Demo连接:

MyEclipse10下实现Hibernate框架_第4张图片

图:新建Demo连接

         注意:mysql安装 的端口号为3306root为一个用户,大家可以新建用户。

         创建连接以后,右键点击连接Demo,选择连接命令列界面,并且运行如下命令,即可:

create database hibernateTest;

use hibernateTest;

create table t_customer(

id int primary key auto_increment,

name varchar(20),

address varchar(50)

);

MyEclipse10下实现Hibernate框架_第5张图片

MyEclipse10下实现Hibernate框架_第6张图片

图:创建测试库

 

         我们创建的hibernatetest库完成了。

MyEclipse10下实现Hibernate框架_第7张图片

图:创建库

第三步创建实体类

首先在MyEclipse上创建一个Web Project,比如我创建的是hibernate_demo1,然后再切到Java透视图。这儿我们在cn.itheima.domain包中创建一个实体类——Customer.java。

public class Customer {

 

    private int id;

    private String name;

    private String address;

 

    public int getId() {

        return id;

    }

    public void setId(int id) {

        this.id = id;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public String getAddress() {

        return address;

    }

    public void setAddress(String address) {

        this.address = address;

    }

    @Override

    public String toString() {

        return "Customer [id=" + id + ", name=" + name + ", address=" + address + "]";

    }  

}

 

第四步导入Hibernate框架相关依赖jar包

首先导入hibernate/lib/required目录下所有的jar包:MyEclipse10下实现Hibernate框架_第8张图片

图:导入包

 

再导入mysql数据库的驱动jar包:

导入完成以后,我们的工程架构如下:

MyEclipse10下实现Hibernate框架_第9张图片

第五步Hibernate的相关配置文件

准备好以上工作以后,接下来我们要踏入Hibernate的学习了,首先我们要编写Hibernat的相关配置文件,Hibernate的相关配置文件分为如下两种:

  1. xxx.hbm.xml:映射配置文件,它主要是用于描述类与数据库中的表的映射关系。
  2. hibernate.cfg.xml:它是Hibernate框架的核心配置文件。

有关这两个文件的详细介绍会在下面的章节,简答来说就是让系统明白我们采用什么方法连接,我们怎样连接,我们的数据的类型是什么。

第六步设置映射配置文件

         1、首先我们要学会如何编写映射配置文件,大家要知道编写完的映射配置文件应与实体类在同一个包下,并且名称应是:类名.hbm.xml,所以我们要在cn.itheima.domain包下创建一个Customer.hbm.xml文件,但是它的约束应该怎么写呢?可以在Hibernate的核心jar包——hibernate-core-5.0.12.Final.jar的org.hibernate包下查找到hibernate-mapping-3.0.dtd文件,打开该文件,找到如下内容:

    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

 

    2然后复制黏贴到Customer.hbm.xml文件中。然后我们把Customer.hbm.xml文件的内容修改为:

      

    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

   

   

       

       

       

           

           

       

       

       

       

   

MyEclipse10下实现Hibernate框架_第10张图片

图:配置映射配置文件

第七步设置核心配置文件

核心配置文件主要是Hibernate框架所使用的,它主要包含了连接数据库的相关信息和Hibernate的相关配置等。 现在我们要学会如何编写Hibernate核心配置文件,核心配置文件应该放在src目录下,并且名称应是hibernate.cfg.xml。

所以我们要在src目录下创建一个hibernate.cfg.xml文件,但是它的约束应该怎么写呢?可以在Hibernate的核心jar包——hibernate-core-5.0.7.Final.jar的org.hibernate包下查找到hibernate-configuration-3.0.dtd文件,打开该文件,找到如下内容:

    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

 

然后复制黏贴到hibernate.cfg.xml文件中,接着我们把下面的内容添加到该文件中:

 

    "-//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.Driverproperty>

        <property name="hibernate.connection.url">jdbc:mysql:///hibernateTestproperty>

        <property name="hibernate.connection.username">rootproperty>

        <property name="hibernate.connection.password">yeziproperty>

 

       

        <property name="hibernate.show_sql">trueproperty>

       

        <property name="hibernate.format_sql">trueproperty>

 

       

        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialectproperty>

 

       

        <mapping resource="cn/itheima/domain/Customer.hbm.xml" />

    session-factory>

hibernate-configuration>

 

MyEclipse10下实现Hibernate框架_第11张图片

图:配置核心配置文件

第八步Hibernate快速入门开发测试

cn.itheima.test包下创建一个单元测试类——HibernateTest1.java。将下面的代码赋值进去,并且开始进行单元测试,测试无误后则样例成功:

package cn.itheima.domain;

 

import java.util.List;

 

import org.hibernate.Query;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

 

import org.junit.Test;

 

 

 

public class HibernateTest1 {

 

    // 保存一个Customer

    @Test

    public void saveCustomerTest() {

        // 创建一个Customer

        Customer c = new Customer();

        c.setName("叶子");

        c.setAddress("武汉");

        System.out.println("sucess1");

        // 使用HibernateAPI来完成将Customer信息保存到mysql数据库中的操作

       

        Configuration config = new Configuration().configure(); // Hibernate框架加载hibernate.cfg.xml文件

        System.out.println("sucess2");

        SessionFactory sessionFactory = config.buildSessionFactory();

       

        System.out.println("sucess3");

        Session session = sessionFactory.openSession(); // 相当于得到一个Connection

       

        // 开启事务

        session.beginTransaction();

        System.out.println("sucess4");

        // 操作

        session.save(c);

        System.out.println("sucess5");

        // 事务提交

        session.getTransaction().commit();

        session.close();

        sessionFactory.close();

        System.out.println("提交完成");

    }

 

    // 根据id查询一个Customer对象

    @Test

    public void findCustomerByIdTest() {

        Configuration config = new Configuration().configure(); // Hibernate框架加载hibernate.cfg.xml文件

        SessionFactory sessionFactory = config.buildSessionFactory();

        Session session = sessionFactory.openSession(); // 相当于得到一个Connection

        // 开启事务

        session.beginTransaction();

       

        System.out.println("开启事务");

        // 根据业务来编写代码

        // Customer c = session..get(Customer.class, 1);

        System.out.println("加载类");

       

        //加载数据库中的第几个数据

        Customer c = session.load(Customer.class, 3);

        System.out.println("加载成功");

       

       // System.out.println(c.getName());

        int i = c.getId();

        String name = c.getName();

        System.out.println("cId = "+i+"cName = "+name);

        // 事务提交

        session.getTransaction().commit();

        session.close();

        sessionFactory.close();

        System.out.print("查找完成");

    }

 

    // 修改操作

    @Test

    public void updateCustomerTest() {

        Configuration config = new Configuration().configure(); // Hibernate框架加载hibernate.cfg.xml文件

        SessionFactory sessionFactory = config.buildSessionFactory();

        Session session = sessionFactory.openSession(); // 相当于得到一个Connection

        // 开启事务

        session.beginTransaction();

 

        // 根据业务来编写代码

        Customer c = session.get(Customer.class, 1);

        c.setName("郑敏");

        session.update(c); // 修改操作

 

        // 事务提交

        session.getTransaction().commit();

        session.close();

        sessionFactory.close();

    }

 

    // 删除操作---根据id进行删除

    @Test

    public void deleteCustomerTest() {

        Configuration config = new Configuration().configure(); // Hibernate框架加载hibernate.cfg.xml文件

        SessionFactory sessionFactory = config.buildSessionFactory();

        Session session = sessionFactory.openSession(); // 相当于得到一个Connection

        // 开启事务

        session.beginTransaction();

 

        // 根据业务来编写代码

        Customer c = session.get(Customer.class, 2);

        session.delete(c); // 删除操作

        System.out.println("删除成功");

       

        // 事务提交

        session.getTransaction().commit();

        session.close();

        sessionFactory.close();

    }

 

    // 查询所有Customer

    @Test

    public void findAllCustomerTest() {

        Configuration config = new Configuration().configure(); // Hibernate框架加载hibernate.cfg.xml文件

        SessionFactory sessionFactory = config.buildSessionFactory();

        Session session = sessionFactory.openSession(); // 相当于得到一个Connection

        // 开启事务

        session.beginTransaction();

 

        // 根据业务来编写代码

        org.hibernate.Query query = session.createQuery("from Customer"); // HQL语句,它类似于SQL语句

       

        List list =  query.list();

        System.out.println(list);

    

        // 事务提交

        session.getTransaction().commit();

        session.close();

        sessionFactory.close();

    }

 

}

  1. Hibernate执行原理总结
  1. 通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件。
  2. 由hibernate.cfg.xml中的读取解析映射信息。
  3. 通过config.buildSessionFactory();得到sessionFactory。
  4. sessionFactory.openSession();得到session。
  5. session.beginTransaction();开启事务。
  6. persistent operate; 执行你自己的操作。
  7. session.getTransaction().commit();提交事务。
  8. 关闭session。
  9. 关闭sessionFactory。
  1. 遇到的问题与解决
  1. 不知道创建映射配置文件:
    1. 在实现样例的过程中,发现不会创建xx.hbm.xml这类的配置文件,在myEclipse创建文件中只有创建xml文件这一项。
    2. 解决方案:创建xml文件,命名为 xx.hbm.xml即可。

MyEclipse10下实现Hibernate框架_第12张图片

图:创建xml文件

注意:该映射文件所放的位置要放在我们的实体类的所在包下。

 

  1. 不知道常见核心配置文件:
    1. 在实现样例的过程中,发现不会创建hibernate.cfg.xml这类的配置文件,在myEclipse创建文件中只有创建xml文件这一项。
    2. 解决方案:创建xml文件,命名为 hibernate.cfg.xml即可。

注意:该文件要放在src目录下。

 

你可能感兴趣的:(Spring,Hibernate)