Hibernate框架搭建

  • Hibernate框架关键词:dao层框架、以面向对象的方式操作数据库、orm思想(对象关系映射,通过映射文件配置对象和数据库中表的关系)

Hibernate框架搭建步骤

导包

required+驱动包
http://ocx5m3vc3.bkt.clouddn.com/Hibernate%E9%A9%B1%E5%8A%A8%E5%8C%85.png

准备实体类和orm元数据

  • User.java

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    package pojo;

    public class User{
    private int id;
    private String name;
    private String password;

    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 getPassword() {
    return password;
    }

    public void setPassword(String password) {
    this.password = password;
    }

    @Override
    public String toString() {
    return "User{" +
    "id=" + id +
    ", name='" + name + '\'' +
    ", password='" + password + '\'' +
    '}';
    }
    }
  • User.hbm.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <?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 package="pojo">
    <!--
    name:即实体类的全名
    table:映射到数据库里面的那个表的名称
    -->
    <class name="User" table="tb_user">
    <!-- class下必须要有一个id的子元素 -->
    <!-- id是用于描述主键的 -->
    <!-- type是规定类型 -->
    <id name="id" column="id" type="int">
    <!-- 主键生成策略 -->
    <generator class="native"></generator>
    </id>
    <!--
    使用property来描述属性与字段的对应关系
    如果length忽略不写,且你的表是自动创建这种方案,那么length的默认长度是255
    -->
    <property name="name" column="name" length="20"></property>
    <property name="password" column="password" length="50"></property>
    </class>
    </hibernate-mapping>

下表是Hibernate的类型对应表
http://ocx5m3vc3.bkt.clouddn.com/Hibernate%E7%B1%BB%E5%9E%8B%E6%98%A0%E5%B0%84.png

创建主配置文件

  • hibernate.cfg.xml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?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>
    <!-- 配置关于数据库连接的四个项:driverClass url username password -->
    <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">root</property>

    <!-- 可以将向数据库发送的SQL语句显示出来 -->
    <property name="hibernate.show_sql">true</property>
    <!-- 格式化SQL语句 -->
    <property name="hibernate.format_sql">true</property>
    <!-- hibernate的方言 -->
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <!--
    create:每次加载hibernate时都自动创建表
    create-drop:每次加载hibernate时自动创建表,结束时删除表。适合用于开发环境。
    update:最常用的属性。第一次加载hibernate时创建表结构;
    以后每次加载都会更新表结构,但是不会删除以前的记录。。适用于运行环境。
    validate:每次加载都验证数据库表结构,并不会创建表
    -->
    <property name="hibernate.hbm2ddl.auto">create</property>

    <!-- 配置hibernate的映射文件所在的位置 -->
    <mapping resource="pojo/User.hbm.xml" />
    </session-factory>
    </hibernate-configuration>

书写测试代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@Test
public void savaUserTest(){
User u = new User();
u.setName("xixi");
u.setPassword("xixi");

Configuration config = new Configuration().configure(); // Hibernate框架加载hibernate.cfg.xml文件
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession(); // 相当于得到一个Connection
// 开启事务
session.beginTransaction();

session.save(u);

// 事务提交
session.getTransaction().commit();
session.close();
sessionFactory.close();

}

查看控制台会发现创表语句和插入语句。
http://ocx5m3vc3.bkt.clouddn.com/Hibernate%E5%88%9B%E8%A1%A8debug.png