一、hibernate环境搭建

hibernate环境搭建

下载hibernate

  • hibernate的jar
  • 连接数据库的jar

解压hibernate,解压后目录结构

  • documentation :对应hibernate开发文档
  • lib :对应hibernate开发所依赖的jar包
    • optional :对应hibernate开发可选的jar包
    • required :对应hibernate开发必须的jar包
  • project :对应hibernate的项目

创建数据库表

create table user(
    id int primary key unique auto_increment,
    name varchar(20),
    password varchar(20)
);

创建表对应实体类

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

创建对象关系映射

  • 一般命名:实体类名.hbm.xml
  • 约束查找:lib/hibernate-core-5.3.7.Final.jar!/org/hibernate/hibernate-mapping-3.0.dtd
<hibernate-mapping>
    <!--建立类与表的映射-->
    <class name="com.qf.entity.User" table="user">
        <!--建立类中的属性与表中主键的对应-->
        <id name="id" column="id">
            <!--主键生成策略-->
            <generator class="native"/>
        </id>

        <!--建立类中的普通属性和表中普通字段的对应-->
        <property name="name" column="name"/>
        <property name="password" column="password"/>
    </class>
</hibernate-mapping>
  • class标签:建立类与表的映射关系

属性

name :类名

table :表名(如果表名和类名一致,可以省略不写)

catalog :数据库名

  • id标签:建立类中属性与表中主键的对应关系

属性

name :类中的属性名

column :表中的字段名(如果表中字段名和类中属性名一致,可以省略不写)

length :长度(hibernate可以根据类自动创建表,这里的length属性就是自动建表字段长度)

type :类型

  • property标签:建立类中属性与表中字段的对应关系

属性

name :类中的属性名

column :表中的字段名(如果表中字段名和类中属性名一致,可以省略不写)

length :长度(hibernate可以根据类自动创建表,这里的length属性就是自动建表字段长度)

type :类型

not-null :设置非空

unique :设置唯一

注:type属性

  1. 使用java中的类型 :type="java.lang.String"
  2. 使用hibernate中的类型 :type="string"
  3. 使用数据库中的类型 : 
    <id name="id" >
        <column name="id" sql-type="varchar"/>
        <!--主键生成策略-->
        <generator class="native"/>
    </id>

配置hibernate核心配置文件hibernate.cfg.xml

约束查找:lib/hibernate-core-5.3.7.Final.jar!/org/hibernate/hibernate-configuration-3.0.dtd

<hibernate-configuration>
    <session-factory>
        <!--必须配置-->
        <!--连接数据库的基本参数-->
        <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        <!--配置hibernate的方言:hibernate用于生成相应数据库的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>
        <!--自动创建表-->
        <property name="hibernate.hbm2ddl.auto">update</property>
        
        <!--告诉核心配置文件需要加载哪个orm映射配置文件-->
        <mapping resource="com/qf/entity/User.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

必须的配置

  • 驱动类
  • URL
  • 用户名
  • 密码
  • 方言

可选的配置

  • 打印sql :hibernate.show_sql 
  • 格式化sql :hibernate.format_sql 
  • 自动建表 :hibernate.hbm2ddl.auto 
    • none :不使用hibernate自动建表
    • create :如果数据库中已经有表,删除原有表,重新创建,如果没有表,新建表
    • create-drop :如果数据库中已经有表,删除原有表,执行操作,删除这个表。如果没有表,新建一个,使用完了删除该表
    • update :如果数据库中有表,使用原有表,如果没有表,创建新表(更新表结构)
    • validate :如果没有表,不会创建表。只会使用数据库中原有的表(校验映射和表结构)

引入映射文件

<mapping resource="com/qf/entity/User.hbm.xml"/> 

测试类

 1 public class demo01 {
 2 
 3     @Test
 4     public void test(){
 5         // 1.加载hibernate核心配置文件
 6         Configuration configure = new Configuration().configure();
 7 
 8         // 2.创建SessionFactory对象:类似JDBC连接池
 9         SessionFactory factory = configure.buildSessionFactory();
10 
11         // 3.通过SessionFactory获取Session对象:类似Connection对象
12         Session session = factory.openSession();
13 
14         // 4.手动开启事务
15         Transaction transaction = session.beginTransaction();
16 
17         // 5.编写代码执行数据库操作
18         User user = new User();
19         user.setId(null);
20         user.setName("admin");
21         user.setPassword("123");
22         Serializable save = session.save(user);
23         int ret = (int) save;
24 
25         // 6.提交事务
26         if(ret > 0){
27             transaction.commit();
28         }else {
29             transaction.rollback();
30         }
31 
32         session.close();
33         factory.close();
34 
35     }
36 }

console输出

Hibernate: 
    insert 
    into
        user
        (name, password) 
    values
        (?, ?)

  

原文地址:https://www.cnblogs.com/qf123/p/10143689.html