Hibernate了解

认知

  1. 百科定义
    • 对象关系映射框架(pojo与数据库表的映射)
    • 开源
    • 对JDBC轻量的封装
    • 自动生成SQL语句
  2. 同类的技术有哪些?
    MyBatis
  3. 主要组成部分:数据持久化
  4. 官方网站:http://hibernate.org/

使用IDEA初次尝试Hibernate

创建项目

IDEA创建项目
生成后目录结构:

初始结构

  • 勾选create default... 生成默认的hibernate配置文件和主要类
  • 选中Libraries的Download令IDEA自动下载一些需要的依赖

加入mySql需要的jar包

导入mySql驱动的jar包

创建一个测试用的数据库

  • 数据库名:test
  • 创建一个表:cars
    CREATE TABLE cars (
    id int(11) NOT NULL AUTO_INCREMENT,
    name varchar(30) ,
    price float ,
    PRIMARY KEY (id)
    ) DEFAULT CHARSET=UTF8;
    

创建一个实体类Car

  • 用于对应数据库中的cars表
    实体类Car
package entity;

public class Car {
    int id;
    String name;
    float price;
    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 float getPrice() {
        return price;
    }
    public void setPrice(float price) {
        this.price = price;
    }
}

建立实体类到表的映射

  • 创建名为Car.hbm.xml的配置文件,建立实体类Car到表cars的映射
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="entity">
    <!-- 类Car映射到表cars -->
    <class name="entity.Car" table="cars">
        <id name="id" column="id">
            <generator class="native">
            </generator>
        </id>
        <property name="name" />
        <property name="price" />
    </class>

</hibernate-mapping>

配置hibernate.cfg.xml

  • 这个文件就是前面勾选Create default hibernate configuration and main class默认生成的配置文件,如果没有默认生成,需要自己创建,需要注意的就是:路径固定(src文件夹下)、名称固定(hibernate.cfg.xml)
    配置hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>

    <session-factory>
        <!-- Database connection settings -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8</property>
        <property name="connection.username">root</property>
        <property name="connection.password">123456</property>
        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="current_session_context_class">thread</property>
        <property name="show_sql">true</property>
        <property name="hbm2ddl.auto">update</property>
        <mapping resource="entity/Car.hbm.xml" />
    </session-factory>

</hibernate-configuration>

测试

package test;

import entity.Car;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class test {
    public static void main(String[] args) {
        //获取SessionFactory
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        //获取Session
        Session session = sessionFactory.openSession();
        //开启事务
        session.beginTransaction();

        //实例化对象,写具体的逻辑CURD操作
        Car car = new Car();
        car.setName("福特");
        car.setPrice(70000);
        session.save(car);

        //提交事务
        session.getTransaction().commit();
        //关闭Session、SessionFactory
        session.close();
        sessionFactory.close();
    }

}

结果

结果

总结

  1. 创建project(注意需要的依赖)
  2. 创建数据库、建表
  3. 创建实体类
  4. 配置实体类到表的映射
  5. 配置hibernate.cfg.xml
  6. 编写逻辑操作
    • 获取SessionFactory
    • 获取Session
    • 开启事务
    • 实例化对象、CURD操作
    • 提交事务
    • 关闭获取SessionFactory、Session
posted @ 2020-03-27 17:50  索隆不喝酒  阅读(141)  评论(0编辑  收藏  举报