Hibernate框架 配置文件基本架构

 2023-09-07 阅读 27 评论 0

摘要:核心配置文件 命名 hibernate.cfg.xml,直接位于src下 XML方式 根元素:<hibernate-configuration> ①基本结构 <session-factory><!--基本信息配置--><property name="key">value</property><!--映射文件引入-->

核心配置文件

命名

hibernate.cfg.xml,直接位于src下

XML方式

根元素:<hibernate-configuration>
①基本结构

<session-factory><!--基本信息配置--><property name="key">value</property><!--映射文件引入-->
</session-factory>

②必须配置

<!--配置基本信息-->
<property name="hibernate.connection.driver_class">value</property>
<property name="hibernate.connection.url">value</property>
<property name="hibernate.connection.user">value</property>
<property name="hibernate.connection.password">value</property>
<!--配置不同数据库及存储引擎-->
<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">value</property><!--数据库连接池管理-->
<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<!--最小数目-->
<property name="c3p0.min_size">value</property>
<!--最大数目-->
<property name="c3p0.max_size">value</property>
<!--连接过期时间(秒),超时清除-->
<property name="c3p0.timeout">value</property>
<!--检查连接池中空闲连接的时间间隔(秒)-->
<property name="c3p0.idle_test_period">value</property>

关于自动建表项的取值

valueeffect
none不使用自动建表
create若有表,则删除原先表,再创建表;
无表,新建一个,(测试)
create-drop若有表,删除表,创建表,执行操作,删除表;
无表,新建一个,使用完了删除该表(测试)
update若有表,之间使用;无表,创建表;可更新表结构
valiable若没表,不会创建表,报错(校验映射和表结构)

④配置实例

<?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><!-- 数据库连接,必需 --><property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property><property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate?serverTimezone = GMT</property><property name="hibernate.connection.user">root</property><property name="hibernate.connection.password">*********</property><property name="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</property><!-- 打印SQL到控制台 --><property name="hibernate.show_sql">true</property><!-- 格式化SQL语句 --><property name="hibernate.format_sql">true</property><!-- 自动创建表 --><property name="hibernate.hbm2ddl.auto">update</property><!-- 配置连接池 --><property name="connection.provider_class">org.hibernate.c3p0.internal.C3P0ConnectionProvider</property><property name="c3p0.min_size">5</property><property name="c3p0.max_size">20</property><property name="c3p0.timeout">1000</property><property name="c3p0.idle_test_period">1000</property><!-- 加载映射文件 --><mapping resource="com/mfqh/test/User.hbm.xml"/></session-factory>
</hibernate-configuration>
properties方式

框架还是框架,key=value
此种方式不能引入映射文件
需手动编写代码加载映射文件:configuration.addResource(“包名/映射文件名”)


映射配置文件

命名

类名.hbm.xml,位置无要求

XML文件配置

根元素:<hibernate-mapping package=“类所在包”>
①基本结构

<class name="类名" table="表名"(类名和表名一致,可省略) catalog="数据库名"(可省略)><!--主键配置--><id name="" column="" ><!--主键生成策略--><generator class="native"/></id><!--其他--><property name="" column="" >
</class>

②id元素(主键)属性

attributeeffect
name类中属性名
column表中字段名(当字段名与属性名一致时,可省略)
length长度(和数据类型在需要自动建表时配置)
type数据类型,可使用:java类型,hibernate类型、数据库类型

Ps:若type使用数据库类型时,需去掉column属性,添加子标签
<column name="" sql-type=""/>

主键生成策略:在实际开发中一般不允许用户手动设置主键,一般将主键交给数据库,手动编写程序进行设置。

valueeffect
incrementhibernate中提供的自动增长机制,适用于short、int、long类型的主键,在单线程中使用(实质为先查询最大值,再加一作为id插入)
identiy适用于short、int、long类型的主键,使用的数据库底层的自动增长机制,适用于有自动增长机制数据库
sequence适用于short、int、long类型的主键,采用的是序列的方式(Mysql不支持)
uuid适用于字符串类型的主键,使用hibernate中的随机方式生成的字符串的主键
native本地策略,可以在identity和sequence之间自动切换
assignedhibernate放弃主键的管理,需要通过手动编写程序或用户自己设置
foreign外部的,一对一的一种关联映射的情况下使用

③property元素属性

attributeeffect
name类中属性名
column表中字段名
length长度
type数据类型
not null是否非空
unique是否唯一键

ssh配置文件详解?③配置实例

<?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 package="com.mfqh.pojo"><class name="User"><!-- 主键 --><id name="id" column="id" type="java.lang.Integer"><generator class="native"/></id><!-- 其他字段 --><property name="name" column="name" type="java.lang.String"/><property name="age" column="age" type="java.lang.Integer"/><property name="sex" column="sex" type="java.lang.String"/><property name="birthday"><!-- 数据库中属性 --><column name="birthday" sql-type="date"/></property> <property name="resident" column="resident" type="java.lang.String"/></class>
</hibernate-mapping>

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/14514.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息