Hibernate 配置文件(hibernate.cfg.xml、hbm.xml)

2023-10-27

 

目录

Hibernate.xml 

1、数据库的基本信息。

2、集成 C3P0,设置数据库连接池信息。

3、Hibernate 基本信息。 

4、注册实体关系映射文件。 

实体关系映射文件 (实体类文件名.hbm.xml)

1、hibernate-mapping标签的属性

2、class标签的属性 

2.1、dynamic-insert:动态添加 (默认为false)

2.2、dynamic-update:动态更新(默认为false)

2.3、where:查询时给 SQL 添加 where 条件


  • hibernate.cfg.xml
  • hbm.xml

Hibernate.xml 

hibernate.xml 配置 Hibernate 的全局环境。 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory>
 <!-- 数据源配置 -->
 <property name="connection.username">root</property>
 <property name="connection.password">root</property>
 <property
name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
 <property name="connection.url">jdbc:mysql://localhost:3306/test?
useUnicode=true&amp;characterEncoding=UTF-8</property>
 <!-- C3P0 -->
 <property name="hibernate.c3p0.acquire_increment">10</property>
 <property name="hibernate.c3p0.idle_test_period">10000</property>
 <property name="hibernate.c3p0.timeout">5000</property>
 <property name="hibernate.c3p0.max_size">30</property>
 <property name="hibernate.c3p0.min_size">5</property>
 <property name="hibernate.c3p0.max_statements">10</property>
 <!-- 数据库⽅⾔ -->
 <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
 <!-- 打印SQL -->
 <property name="show_sql">true</property>
 <!-- 格式化SQL -->
 <property name="format_sql">true</property>
 <!-- 是否⾃动⽣成数据库 -->
 <property name="hibernate.hbm2ddl.auto"></property>
 <!-- 注册实体关系映射⽂件 -->
 <mapping resource="com/southwind/entity/People.hbm.xml"></mapping>
 <mapping resource="com/southwind/entity/Customer.hbm.xml"></mapping>
 <mapping resource="com/southwind/entity/Orders.hbm.xml"></mapping>
 <mapping resource="com/southwind/entity/Account.hbm.xml"></mapping>
 <mapping resource="com/southwind/entity/Course.hbm.xml"></mapping>
 </session-factory>
</hibernate-configuration>

1、数据库的基本信息。

<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/test?
useUnicode=true&amp;characterEncoding=UTF-8</property>

2、集成 C3P0,设置数据库连接池信息。

<property name="hibernate.c3p0.acquire_increment">10</property>
<property name="hibernate.c3p0.idle_test_period">10000</property>
<property name="hibernate.c3p0.timeout">5000</property>
<property name="hibernate.c3p0.max_size">30</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_statements">10</property>

3、Hibernate 基本信息。 

<!-- 数据库⽅⾔ -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 打印SQL -->
<property name="show_sql">true</property>
<!-- 格式化SQL -->
<property name="format_sql">true</property>
<!-- 是否⾃动⽣成数据库 -->
<property name="hibernate.hbm2ddl.auto">update</property>

hibernate.hbm2ddl.auto 属性的可选值:

  • update:动态创建表,如果表存在,则直接使⽤,如果表不存在,则创建。
  • create:⽆论表是否存在,都会重新创建。
  • create-drop:初始化创建表,程序结束时删除表。
  • validate:校验实体关系映射⽂件和数据表是否对应,不能对应直接报错。

4、注册实体关系映射文件。 

<!-- 注册实体关系映射⽂件 -->
<mapping resource="com/southwind/entity/People.hbm.xml"></mapping>
<mapping resource="com/southwind/entity/Customer.hbm.xml"></mapping>
<mapping resource="com/southwind/entity/Orders.hbm.xml"></mapping>
<mapping resource="com/southwind/entity/Account.hbm.xml"></mapping>
<mapping resource="com/southwind/entity/Course.hbm.xml"></mapping>

实体关系映射文件 (实体类文件名.hbm.xml)

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD
3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
     <class name="com.southwind.entity.Course" table="t_course">
         <id name="id" type="java.lang.Integer">
             <column name="id"></column>
             <generator class="identity"></generator>
         </id>
         <property name="name" type="java.lang.String">
             <column name="name"></column>
         </property>
         <set name="accounts" table="account_course" lazy="false">
             <key column="cid"></key>
             <many-to-many class="com.southwind.entity.Account" column="aid">
             </many-to-many>
         </set>
     </class>
</hibernate-mapping>

1、hibernate-mapping标签的属性

  • package:给 class 节点对应的实体类统⼀设置包名,此处设置包名,class 的 name 属性就可以 省略包名。 
  • schema:数据库 schema 的名称
  • catalog:数据库 catalog 的名称
  • default-cascade:默认的级联关系,默认为 none
  • default-access:Hibernate ⽤来访问属性的策略
  • default-lazy:指定了未明确注明 lazy 属性的 Java 属性和集合类,Hibernate 会采⽤什么样的加载 ⻛格,默认为 true
  • auto-import:指定我们是否可以在查询语句中使⽤⾮全限定类名,默认为 true,如果项⽬中有两 个同名的持久化类,最好在这两个类的对应映射⽂件中国配置为 false 

2、class标签的属性 

  • name:实体类名
  • table:数据表名
  • schema:数据库 schema 的名称,会覆盖 hibernate-mapping 的 schema
  • catalog:数据库 catalog 的名称,会覆盖 hibernate-mapping 的 catalog
  • proxy:指定⼀个接⼝,在延迟加载时作为代理使⽤
  • dynamic-update:动态更新(默认为false)
  • dynamic-insert:动态添加 (默认为false)

2.1、dynamic-insert:动态添加 (默认为false)

package com.southwind.test;
import com.southwind.entity.Account;
import com.southwind.entity.People;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class Test8 {
 public static void main(String[] args) {
 //创建 Configuration
 Configuration configuration = new
Configuration().configure("hibernate.xml");
 //获取 SessionFactory
 SessionFactory sessionFactory = configuration.buildSessionFactory();
 //获取 Session
 Session session = sessionFactory.openSession();
 People people = new People();
 people.setName("张三");
 session.save(people);
 session.close();
 }
}

dynamic-insert=false

dynamic-insert=true

<class name="com.southwind.entity.People" table="people" dynamicinsert="true">

2.2、dynamic-update:动态更新(默认为false)

public class Test8 {
 public static void main(String[] args) {
 //创建 Configuration
 Configuration configuration = new
Configuration().configure("hibernate.xml");
 //获取 SessionFactory
 SessionFactory sessionFactory = configuration.buildSessionFactory();
 //获取 Session
 Session session = sessionFactory.openSession();
 People people = session.get(People.class,6);
 people.setMoney(2000.0);
 session.update(people);
 session.beginTransaction().commit();
 session.close();
 }
}

dynamic-update=false 

dynamic-update=true

<class name="com.southwind.entity.People" table="people" dynamic-insert="true"
dynamic-update="true">

2.3、where:查询时给 SQL 添加 where 条件

import com.southwind.entity.Account;
import com.southwind.entity.People;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.query.Query;
import java.util.List;
public class Test8 {
 public static void main(String[] args) {
 //创建 Configuration
 Configuration configuration = new
Configuration().configure("hibernate.xml");
 //获取 SessionFactory
 SessionFactory sessionFactory = configuration.buildSessionFactory();
 //获取 Session
 Session session = sessionFactory.openSession();
 String hql = "from People";
 Query query = session.createQuery(hql);
 List<People> list = query.list();
 for (People people:list) {
 System.out.println(people);
 }
 session.beginTransaction().commit();
 session.close();
 }
}

 设置where属性之前

  设置where属性之后

<class name="com.southwind.entity.People" table="people" dynamic-insert="true"
dynamic-update="true" where="id = 6">

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate 配置文件(hibernate.cfg.xml、hbm.xml) 的相关文章

随机推荐

  • RAR Extractor Mac:可以提取所有大多数格式的压缩文件

    RAR Extractor是mac上的解压缩软件 可以提取所有大多数格式 超过50种格式 的压缩文件 支持RAR winmAIl dat ZIP 7z tbz sti tar xar lha lzh hqx bin bz2 bzip2 bz
  • 保存登录的用户名

    自动测试服务器中用到用户的登录问题 在servlet中写上 String username request getParameter username 创建一个session对象 HttpSession session request ge
  • java 新手入门电子书_java从入门到精通第6版电子书 PDF高清版

    java从入门到精通第6版电子书 PDF高清版由软吧下载编辑精心整理 java从入门到精通第6版pdf是在之前的版本上更加详细的书籍 对于想要快速了解java的的话 欢迎下载java从入门到精通第6版pdf哦 欢迎下载使用 如果您觉得本站还
  • Java 初始化 List 的几种方法

    最常见的初始化 List 方法为 List
  • Flink,HDFS,YARN,Zookeeper之中的概念

    无论如何都要看一手资料 能看官方文档就不要看别的博客 有些地方很误导人 Hadoop内部子项目 HDFS YARN都是内部集成的 Hadoop Common The common utilities that support the oth
  • Java线程池中的线程发生OOM会如何?

    环境 JDK1 8 线程池中如果发生OOM后会如何 线程池ThreadPoolExecutor当有线程发生了OOM 线程池会停止工作吗 public static void main String args ThreadPoolExecut
  • React中组件间过渡动画如何实现?

    一 是什么 在日常开发中 页面切换时的转场动画是比较基础的一个场景 当一个组件在显示与消失过程中存在过渡动画 可以很好的增加用户的体验 在react中实现过渡动画效果会有很多种选择 如react transition group react
  • 已解决:ORA-01114(临时表满了)

    记录 ORA 01114 将块写入文件 201 时出现 IO 错误 解决方法 创建一个中转的临时表空间TEMP2重新建立临时表TEMP 1 查询该用户下的默认临时表空间 SQL gt SELECT bytes 1024 1024 1024
  • 【面试系列】划分字母区间

    题意 原题链接 思路 由于每个字母只能被划分在一个区间内 所以我们可以考虑这个字母的区间范围 这样就得到了至多 26 26 26个字母的区间范围 所以有区间范围重叠的字母必须都被分到一个区间内 因此这个问题就转换为合并区间问题 排序后贪心合
  • 从零开始构建SSD网络实现目标识别项目

    前言 由于此项目全过程过于繁杂 我前后做了三四个月 无法把所有内容融入这一篇文章之中 所以本文以逻辑串联为主 记录了我从零开始 构建vgg 300网络 gt 构建 SSD模型 gt 数据标注 gt 训练以及训练模型保存 gt 恢复模型进行预
  • 衡量基因相对表达量的RPKM、FPKM、TPM详解

    衡量基因相对表达量的RPKM和FPKM 及TPM 1 RPKM Reads Per Kilobase per Million 和FPKM Fragments Per Kilobase per Million 1 引入 每一千碱基 per k
  • 编写一个程序,求出200到300之间的数,且满足条件:它们三个数字之积为42,三个数字之和为12...

    定义变量ge shi bai 用于存放个位 十位 百位上的数字 int number 0 使用for循环 for number 200 number lt 300 number 取出百位数 int bai number 100 取出十位数
  • http 接口测试、 压力并发测试、自动化化测试

    Postman 可以在开发中用来调试验证http接口的正确性 JMeter 可以设置并发线程数进行Http接口的压力测试 RobotFramework 可以带逻辑的实现多个接口的自动化测试 RobotFramework入门 一 简要介绍及使
  • QQueue使用介绍

    QT的队列是类QQueue 它的原理其实就只是一个QList的结构 在继承QListj基础上封装了几个函数 template
  • MATLAB-深度网络设计器

    一 操作步骤 1 打开APP中的深度网络设计器 2 点击建立空白网络 3 根据图像数据的具体情况建立神经网络 本文以2为图像数据为例 4 调整分类数 本文演示2分类 5 导入数据 本文演示的数据为 123 文件夹下A B两类图片数据 6 训
  • 用 Python 实现 OpenAI 余额查询功能

    大家开发完 OpenAI 的产品后经常需要关注费用情况 也有很多网站支持输入 api key 查询余额 但是 你真的敢用么 这里教大家自己用 python 写一段查询 openai key 的代码 如下 import datetime 用您
  • 技术人赚钱的9个路线

    没有轻松地路线 只是你没看见付出的光阴 明哥语录 赚钱之后的4个流向 技术是最容易变现的 只是我们都没有注意到而已 很多技术人对自己的技术价值认识不清晰 导致怀抱金砖而不知 这也就形成了那些外包平台 帮你链接资源赚取资源信息差价 其实现在个
  • C语言字符串转long long例程atoll()及long long打印

    ernest 20161129 include unistd h include fcntl h include stdio h include
  • excel服务器bom修改,勤哲Excel服务器物料清单BOM表的实现方法

    一 什么是BOM 在企业信息化进程中 经常会涉及到BOM表 BOM数据等 那么什么是BOM呢 简单的说BOM Bill of Material 就是物料清单 用计算机辅助企业生产管理 首先要使计算机能够读出企业所制造的产品构成和所有要涉及的
  • Hibernate 配置文件(hibernate.cfg.xml、hbm.xml)

    目录 Hibernate xml 1 数据库的基本信息 2 集成 C3P0 设置数据库连接池信息 3 Hibernate 基本信息 4 注册实体关系映射文件 实体关系映射文件 实体类文件名 hbm xml 1 hibernate mappi