• 一、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
            (?, ?)
    

      

  • 相关阅读:
    dll学习
    mysql解压版安装
    mysql创建用户以及搭建数据库
    Springboot使用mybatis-plus
    分布式系统
    2、Zookeeper安装以及dubbo-admin的安装启动
    搭建分布式系统(idea+springboot+dubbo)
    Zookeeper下载和启动
    Spring Cloud底层原理
    Redis
  • 原文地址:https://www.cnblogs.com/qf123/p/10143689.html
Copyright © 2020-2023  润新知