【极客营】Hibernate常用的配置文件-核心配置文件

作者:何征天

课程视频地址:https://ke.qq.com/course/273907

1.1.  Hibernate配置文件之核心配置文件

1. 核心配置文件的两种方式(了解)
    第一种方式是属性文件的形式,即properties的配置文件
  * hibernate.properties
  * hibernate.connection.driver_class=com.mysql.jdbc.Driver
  * 缺点
  * 不能加载映射的配置文件,需要手动编写代码去加载
        
  * 第二种方式是XML文件的形式,开发基本都会选择这种方式
  * hibernate.cfg.xml
    <propertyname="hibernate.connection.driver_class" >com.mysql.jdbc.Driver</property>
   优点
  * 格式比较清晰
  * 编写有提示
  * 可以在该配置文件中加载映射的配置文件(最主要的)
    
     2. 关于hibernate.cfg.xml的配置文件方式
       必须有的配置
       * 数据库连接信息:
        hibernate.connection.driver_class        -- 连接数据库驱动程序
        hibernate.connection.url            
        hibernate.connection.url             -- 连接数据库URL
        hibernate.connection.username          --
        hibernate.connection.username          --数据库用户名
        hibernate.connection.password          --数据库密码
            
       方言:
        hibernate.dialect                -- 操作数据库方言
       可选的配置
             hibernate.show_sql                --显示SQL
             hibernate.format_sql               --格式化SQL
             hibernate.hbm2ddl.auto             --通过映射转成DDL语句
              create      --每次都会创建一个新的表.---测试的时候
              create-drop   --每次都会创建一个新的表,当执行结束之后,将创建的这个表删除.---测试的时候
              update     --如果有表,使用原来的表.没有表,创建一个新的表.同时更新表结构.
              validate   --如果有表,使用原来的表.同时校验映射文件与表中字段是否一致如果不一致就会报错.
        
       * 加载映射
       * 如果XML方式:<mapping resource="cn/itcast/demo1/Customer.hbm.xml" />

1.2  控制台打印sql

建议在测试环境下,都将sql打开,便于调试。

<!-- 打印sql语句的配置 -->

<property name="hibernate.show_sql">true</property>

<property name="hibernate.format_sql">true</property>

1.3 Hibernate框架整合C3P0连接池

1. 先导入C3P0的jar包

  * 先导入C3P0的jar包(3个jar包),在hibernate-release-5.0.7.Final\lib\optional目录下

2. 在hibernate.cfg.xml的配置文件中编写配置

  <!-- C3P0的供应商 -->

    <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>

  <!-- 最小连接 -->

  <property name="hibernate.c3p0.min_size">5</property>

  <!-- 最大连接数 -->

  <property name="hibernate.c3p0.max_size">10</property>

  <!-- 每120秒检查空闲连接 -->

  <property name="hibernate.c3p0.timeout">120</property>

1.4    自动建表

该配置是让hibernate是否自动建立相应的表。也就是说,你数据库可以没有表,hibernate可以自动给你建立一个。


 create-drop:在程序运行时,(创建session工厂的时候)会自动建表,在程序停止时(关闭sessionFactory),表删除

如何证明create-drop的功能?

直接使用debug的方式,断点查看


第一步,观察表是否创建成功(标志:原先的表被删除,数据丢失)

第二步,实现保存操作,观察表中是否有数据

第三步,程序运行结束,观察表是否被删除

 create:在程序运行时,如果表不存在,自动建表,如果存在,则不进行任何操作(mysql会先删除再创建)

 update:在程序运行时,如果表不存在,自动建表,如果表存在,则检查表和类的结构是否一致,如果不一致,则更新表结构.(推荐)

update:

在Customer类中加入如下代码:

//客户联系地址

    private String cust_address;

   

    public String getCust_address() {

       returncust_address;

    }

    publicvoid setCust_address(String cust_address) {

       this.cust_address = cust_address;

    }

在Customer.hbm.xml中添加如下代码

<property name="cust_address" column="cust_address"></property>

<property name="cust_address" column="cust_address"></property>

修改hibernate.cfg.xml中建表配置:

<property name="hibernate.hbm2ddl.auto">update</property>

测试

如果当表中的字段比配置文件多的时候,那么表中多的字段,hibernate将无法维护。(因为没有映射)

 validate:在程序运行时,如果表结构和类不一致,则报错!(表中没有相应的字段,则报错,表中有冗余字段,不报错)


【自动建表小结】


猜你喜欢

转载自blog.csdn.net/geek_nanji/article/details/79385491