hibernate.cfg.xml,直接位于src下
根元素:<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>
关于自动建表项的取值
value | effect |
---|---|
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>
框架还是框架,key=value
此种方式不能引入映射文件
需手动编写代码加载映射文件:configuration.addResource(“包名/映射文件名”)
类名.hbm.xml,位置无要求
根元素:<hibernate-mapping package=“类所在包”>
①基本结构
<class name="类名" table="表名"(类名和表名一致,可省略) catalog="数据库名"(可省略)><!--主键配置--><id name="" column="" ><!--主键生成策略--><generator class="native"/></id><!--其他--><property name="" column="" >
</class>
②id元素(主键)属性
attribute | effect |
---|---|
name | 类中属性名 |
column | 表中字段名(当字段名与属性名一致时,可省略) |
length | 长度(和数据类型在需要自动建表时配置) |
type | 数据类型,可使用:java类型,hibernate类型、数据库类型 |
Ps:若type使用数据库类型时,需去掉column属性,添加子标签
<column name="" sql-type=""/>
主键生成策略:在实际开发中一般不允许用户手动设置主键,一般将主键交给数据库,手动编写程序进行设置。
value | effect |
---|---|
increment | hibernate中提供的自动增长机制,适用于short、int、long类型的主键,在单线程中使用(实质为先查询最大值,再加一作为id插入) |
identiy | 适用于short、int、long类型的主键,使用的数据库底层的自动增长机制,适用于有自动增长机制数据库 |
sequence | 适用于short、int、long类型的主键,采用的是序列的方式(Mysql不支持) |
uuid | 适用于字符串类型的主键,使用hibernate中的随机方式生成的字符串的主键 |
native | 本地策略,可以在identity和sequence之间自动切换 |
assigned | hibernate放弃主键的管理,需要通过手动编写程序或用户自己设置 |
foreign | 外部的,一对一的一种关联映射的情况下使用 |
③property元素属性
attribute | effect |
---|---|
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>
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态