Hibernate入门第三讲——Hibernate的常见配置

本文详细介绍了Hibernate的配置文件,包括映射配置文件和核心配置文件(hibernate.cfg.xml)的作用。映射配置文件用于建立类与表的映射关系,如``、``和``标签的使用。核心配置文件用于描述Hibernate的相关设置,如数据库连接信息和自动建表策略(hibernate.hbm2ddl.auto)。文章探讨了不同自动建表策略的适用场景,如`create`、`create-drop`、`update`和`validate`。
摘要由CSDN通过智能技术生成

《Hibernate入门第一讲——Hibernate框架的快速入门》一讲中,我有讲到Hibernate的两个配置文件,今天就来详细地介绍这两个配置文件。在Hibernate中,我们主要使用两种配置文件:

  • 核心配置文件——hibernate.cfg.xml(主要描述Hibernate的相关配置);
  • 映射配置文件——xxx.hbm.xml。

映射配置文件

映射配置文件的名称是类名.hbm.xml,它一般放置在实体类所在的包下。这个配置文件的主要作用是建立表与类之间的映射关系。下面我来粗略地介绍一下该映射配置文件,当然你可以在以后的Hibernate学习中逐渐地补全一些细枝末节。

  • 如果统一声明包名,那么在<class>标签的name属性的值中就不需要写类的全名了;
    在这里插入图片描述

  • 关于<class>标签配置的详细介绍:

    • 该标签用来建立类与表的映射关系。
    • 该标签中有如下这些属性:
      • name属性:类的全路径
      • table属性:映射到数据库里面的那个表的名称,如果表的名称与类名一致,那么table属性可以省略
      • catalog属性:数据库名称,可以省略,如果省略,则参考核心配置文件中url路径中的库名称
  • 关于<id>标签配置的详细介绍:
    在这里插入图片描述
    首先该标签必须存在,该标签用来建立类中的id属性与表中的主键的对应关系。该标签中有如下这些属性:

    • name:类中的属性名称
    • column:表中的主键名称,类中的属性名和表中的字段名(主键名)如果一致,column可以省略
    • length:字段长度,如果length忽略不写,且你的表是自动创建这种方案,那么length的默认长度是255(可以根据你的映射文件自动建表,如果现在数据库里面是没有表的,那么只要一运行咱们的程序,它就可以帮你把表建起来。如果你没有给定长度,那么它便会使用默认长度,像字符串的长度默认就是255)
    • type:指定类型,你可以不用写,Hibernate会帮你自动转换

    该标签中的<generator>子标签主要是描述主键生成策略的,这里就不做篇幅来介绍了,请看后面的文章。

  • 关于<property>标签

    • 该标签用来建立类中的普通属性与表中非主键字段的对应关系。
    • 该标签中有如下这些属性:
      • name:类中的属性名
      • column:表中的字段名
      • length:长度
      • type:类型
      • not-null:设置是否非空
      • unique:设置唯一

关于Hibernate映射配置文件中的类型问题

对于type属性它的取值可以有三种:

  1. Java中的数据类型;
  2. Hibernate中的数据类型;
  3. SQL的数据类型。

可参考下表:
在这里插入图片描述
这样看来,我实体类(Customer.java)的映射配置文件可以写为:
在这里插入图片描述
或者
在这里插入图片描述

核心配置文件

Hibernate的核心配置文件,即hibernate.cfg.xml,主要用来描述Hibernate的相关配置。对于Hibernate的核心配置文件它有两种方式:

  • 第一种方式:属性文件,即hibernate.properties,其内容应该是这样子的:

    hibernate.connection.driver_class=com.mysql.jdbc.Driver
    ...
    hibernate.show_sql=true
    

    温馨提示:这种属性文件的方式不能引入映射文件,须手动编写代码加载映射文件。

  • 第二种方式:XML文件,即hibernate.cfg.xml。

我们在开发中使用比较多的是hibernate.cfg.xml这种方式,原因是它的配置能力更强,并且易于修改。所以我主要讲解的是hibernate.cfg.xml这种配置方式。我就以《Hibernate入门第一讲——Hibernate框架的快速入门》一文案例中的hibernate.cfg.xml核心配置文件为例进行讲解。

<?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>
		<!-- 下面是三个必须要有的配置 -->
		<!-- 配置连接MySQL数据库的基本参数 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql:///hibernate_demo01</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">liayun</property>
		
		<!-- 配置Hibernate的方言 -->
		<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>
		
		<!-- 告诉Hibernate的核心配置文件加载哪个映射文件 -->
		<mapping resource="com/meimeixia/hibernate/demo01/Customer.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

可将以上配置文件的内容分为3部分来看待:

  • 加载数据库相关信息
    在这里插入图片描述
  • Hibernate的相关配置
    在这里插入图片描述
  • 加载映射配置文件
    在这里插入图片描述

温馨提示:对于hibernate.cfg.xml配置文件中的要配置的内容可以参考project/etc/hibernate.properties文件中的配置。如果你查阅hibernate.properties文件,便可发现有如下内容:
在这里插入图片描述
那么hibernate.hbm2ddl.auto这个玩意到底是个什么东东呢?这儿我就来详解讲讲,先说结论:配置这个玩意之后,我们就可以进行表的自动创建。这个玩意有如下5个取值:

  • none:不使用Hibernate帮我们自动建表;

  • create:如果数据库中已经有了表,则删除原有表,重新创建;如果没有表,则新建表。即每次都会创建一个新的表,但不删除,一般在测试中使用。下面我来举例说明该属性值,要知道我也是在《Hibernate入门第一讲——Hibernate框架的快速入门》一文案例的基础上来讲解的。
    首先在hibernate.cfg.xml配置文件中加入如下内容:

    <!-- 自动创建表 -->
    <property name="hibernate.hbm2ddl.auto">create</property>
    

    在这里插入图片描述
    然后执行单元测试类——HibernateDemo1.java中的demo1()方法:

    package com.meimeixia.hibernate.demo01;
    
    import org.hibernate.Session
  • 41
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李阿昀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值