首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hibernate的基本配置

Hibernate的基本配置

作者头像
爱撒谎的男孩
发布2019-12-31 14:54:15
8610
发布2019-12-31 14:54:15
举报
文章被收录于专栏:码猿技术专栏码猿技术专栏

文章目录

  1. 1. Hibernate的基本配置
    1. 1.1. 核心配置文件(hibernate.cfg.xml)
      1. 1.1.1. 必须的配置(配置数据库信息)
      2. 1.1.2. 可选的配置
      3. 1.1.3. 实例
    2. 1.2. 映射关系文件
      1. 1.2.1. 作用
      2. 1.2.2. 缺点
      3. 1.2.3. 创建
      4. 1.2.4. 属性
      5. 1.2.5. 实例
      6. 1.2.6. 注意
    3. 1.3. SQL方言
      1. 1.3.1. 常用的方言(Mysql,Oracle)
    4. 1.4. 主键生成方式
      1. 1.4.1. 如何使用
      2. 1.4.2. 分类
      3. 1.4.3. 常见的分类

Hibernate的基本配置

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

  1. 名字为hibernate.cfg.xml
  2. 放在根目录下(resource)

必须的配置(配置数据库信息)

  • hibernate.connection.driver_class 加载驱动,其中的mysql的为:com.mysql.jdbc.Driver
  • hibernate.connection.url 数据库的连接,其中mysql是jdbc:mysql://localhost:3306/hirbernate
  • hibernate.connection.username 数据库的用户名
  • hibernate.connection.password 数据库的密码
  • hibernate.dialect 数据库的方言,其中mysql:org.hibernate.dialect.MySQLDialect

可选的配置

  • hibernate.show_sql 输出sql执行的语句到控制台,false,true
  • hibernate.format_sql 格式化sql语句,true,false
  • hibernate.hbm2ddl.auto 配置自动生成表,其中有四个值,分别是create(表示hibernate自动创建表,但是每次执行完成之后都会删除上一个表重新创建一个),update(如果还没有表,那么就生成一个,如果已经存在这个表,那么就会更新这个表),validate(不会自动创建表,字段不一致时会出现异常),create-drop(每次加载的时候都会创建表,但是SessionFactory关闭后就会自动删除这个表)。我们使用最多的是update
  • <mapping resource="com/bean/Student.hbm.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>

		<!-- 必须要配置的5大参数,4大参数,一个方言 其中的四大参数是连接JDBC必须的参数 这里的方言也是必须的 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hirbernate</property>

		<property name="hibernate.connection.username">root</property>

		<property name="hibernate.connection.password">root</property>

		<!-- mysql的方言 -->
		<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>

		<!-- 映射配置文件,这里是引用Student类的配置文件,注意这里的配置文件可以有多个 -->
		<mapping resource="cn/tedu/bean/Student.hbm.xml" />
	</session-factory>
</hibernate-configuration>

映射关系文件

作用

  • 指定实体类的各个字段与表的关系

缺点

  • 太麻烦了,一个项目中有很多个实体类,那么我们也需要配置多个映射关系文件
  • 后面会使用注解的方式替代这个映射关系文件

创建

  1. 每一个实体类对应一个映射配置文件
  2. 映射关系文件的名字最好是实体类名.hbm.xml(不强制规定)
  3. 最好和实体类放在同一个包中

属性

  1. class
    • name : 对应的实体类的全类名(包名+类名)
    • table : 在数据库中对应的表的名称
  2. id 指定主键的对应关系,这个mybatis很相似
    • property : 实体类中的主键的字段
    • column : 表中的主键字段
  3. property 指定表中其他字段的对应关系

实例

  • 实体类Student
public class Student {
	private String name;
	private Integer id;  //主键
	private Integer age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
}
  • 映射关系文件 (Student.hbm.xml)
<?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>
	<!-- name:指定实体类的路径 table:指定该实体类对应的表的名称 -->
	<class name="cn.tedu.bean.Student" table="student">
		<!-- <id>配置主键,name指定JavaBean中的属性,column指定的是表中的属性 -->
		<id name="id" column="id">
			<!-- 配置主键的生成策略 -->
			<generator class="native"></generator>
		</id>
		<!-- property是定义非主键的类型 name:指定实体类中的属性名称 column:指定实体类中的属性对应在表中的元素的名称 如果这里的name和column相同,那么可以省略这里的colum,不过建议写全,更加清晰 -->
		<property name="name" column="name"></property>
		<property name="age" column="age"></property>
	</class>
</hibernate-mapping>

注意

  • 如果实体类中的属性和表中的属性字段相同,那么其中的column可以省略,但是建议写全

SQL方言

  • 告诉Hibernate你使用的是哪一个数据库,Hibernate便可以根据设定的方言来对应数据库

常用的方言(Mysql,Oracle)

  • mysql : org.hibernate.dialect.MySQLDialect
  • Oracle : org.hibernate.dialect.OracleDialect

主键生成方式

  • 我们在学习mysql的时候,一般都会设置主键为自增长,这个自增长就是主键生成方式

如何使用

  • 主键生成策略是在映射关系文件中定义的,使用的是<generator>定义的

分类

常见的分类

sequence: 采用序列方式生成主键,适用于Oracle数据库
 <generator class="sequence"> 	<param name="sequence">序列名</param> </generator> 
  • identity
    • 是采用数据库自增长机制生成主键,适用于Oracle之外的其他的数据库
    • 配置语法 : <generator class="identity"></generator>
  • native 是根据当前配置的数据库方言,自动选择sequence或者identity
    • 在mysql的环境下是自增长的方式
    • 配置语法如下:<generator class="native"></generator>
  • uuid 用一个128-bit的UUID算法生成字符串类型的标识符, 这在一个网络中是唯一的(使用了IP地址)。UUID被编码为一个32位16进制数字的字符串。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Hibernate的基本配置
    • 核心配置文件(hibernate.cfg.xml)
      • 必须的配置(配置数据库信息)
      • 可选的配置
      • 实例
    • 映射关系文件
      • 作用
      • 缺点
      • 创建
      • 属性
      • 实例
      • 注意
    • SQL方言
      • 常用的方言(Mysql,Oracle)
    • 主键生成方式
      • 如何使用
      • 分类
      • 常见的分类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档