【极客营】Hibernate常用的配置文件-核心配置文件
作者:何征天
课程视频地址:https://ke.qq.com/course/273907
1.1. Hibernate配置文件之核心配置文件
1. 核心配置文件的两种方式(了解)
* 第一种方式是属性文件的形式,即properties的配置文件
* hibernate.properties
* hibernate.connection.driver_class=com.mysql.jdbc.Driver
* 缺点
* 不能加载映射的配置文件,需要手动编写代码去加载
* 第二种方式是XML文件的形式,开发基本都会选择这种方式
* hibernate.cfg.xml
* <propertyname="hibernate.connection.driver_class" >com.mysql.jdbc.Driver</property>
* 优点
* 格式比较清晰
* 编写有提示
* 可以在该配置文件中加载映射的配置文件(最主要的)
2. 关于hibernate.cfg.xml的配置文件方式
* 必须有的配置
* 数据库连接信息:
hibernate.connection.driver_class -- 连接数据库驱动程序
hibernate.connection.url
hibernate.connection.url -- 连接数据库URL
hibernate.connection.username --
hibernate.connection.username --数据库用户名
hibernate.connection.password --数据库密码
* 方言:
hibernate.dialect -- 操作数据库方言
* 可选的配置
* hibernate.show_sql --显示SQL
* hibernate.format_sql --格式化SQL
* hibernate.hbm2ddl.auto --通过映射转成DDL语句
* create --每次都会创建一个新的表.---测试的时候
* create-drop --每次都会创建一个新的表,当执行结束之后,将创建的这个表删除.---测试的时候
* update --如果有表,使用原来的表.没有表,创建一个新的表.同时更新表结构.
* validate --如果有表,使用原来的表.同时校验映射文件与表中字段是否一致如果不一致就会报错.
* 加载映射
* 如果XML方式:<mapping resource="cn/itcast/demo1/Customer.hbm.xml" />
1.2 控制台打印sql
建议在测试环境下,都将sql打开,便于调试。
<!-- 打印sql语句的配置 --> <property name="hibernate.show_sql">true</property> <property name="hibernate.format_sql">true</property> |
1.3 Hibernate框架整合C3P0连接池
1. 先导入C3P0的jar包
* 先导入C3P0的jar包(3个jar包),在hibernate-release-5.0.7.Final\lib\optional目录下
2. 在hibernate.cfg.xml的配置文件中编写配置
<!-- C3P0的供应商 --> <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> <!-- 最小连接 --> <property name="hibernate.c3p0.min_size">5</property> <!-- 最大连接数 --> <property name="hibernate.c3p0.max_size">10</property> <!-- 每120秒检查空闲连接 --> <property name="hibernate.c3p0.timeout">120</property> |
1.4 自动建表
该配置是让hibernate是否自动建立相应的表。也就是说,你数据库可以没有表,hibernate可以自动给你建立一个。
create-drop:在程序运行时,(创建session工厂的时候)会自动建表,在程序停止时(关闭sessionFactory时),表删除
如何证明create-drop的功能?
直接使用debug的方式,断点查看
第一步,观察表是否创建成功(标志:原先的表被删除,数据丢失)
第二步,实现保存操作,观察表中是否有数据
第三步,程序运行结束,观察表是否被删除
create:在程序运行时,如果表不存在,自动建表,如果存在,则不进行任何操作(mysql会先删除再创建)
update:在程序运行时,如果表不存在,自动建表,如果表存在,则检查表和类的结构是否一致,如果不一致,则更新表结构.(推荐)
update:
在Customer类中加入如下代码:
//客户联系地址 private String cust_address; public String getCust_address() { returncust_address; } publicvoid setCust_address(String cust_address) { this.cust_address = cust_address; } |
在Customer.hbm.xml中添加如下代码:
<property name="cust_address" column="cust_address"></property> |
<property name="cust_address" column="cust_address"></property> |
修改hibernate.cfg.xml中建表配置:
<property name="hibernate.hbm2ddl.auto">update</property> |
测试
如果当表中的字段比配置文件多的时候,那么表中多的字段,hibernate将无法维护。(因为没有映射)
validate:在程序运行时,如果表结构和类不一致,则报错!(表中没有相应的字段,则报错,表中有冗余字段,不报错)
【自动建表小结】
【极客营】Hibernate常用的配置文件-核心配置文件相关推荐
- StarRocks极客营 | 90天,17名新晋贡献者,SQL Planner 实战回顾
若能体验一个字符串的 SQL 怎么一步步在 StarRocks 被执行起来,对于 OLAP 开发者来说,能大大帮助理解整个框架和系统流程. 近日,由 StarRocks 社区举办的 SQL Plann ...
- “StarRocks 极客营” 重磅来袭,和技术大牛一起推开数据库梦想之门!
操作系统.编译器.数据库是软件工程师的梦之所向,对于大多数人而言,却是近在眼前.远在天边: 你是否曾渴望加入 Linux 这样伟大的社区,然觉门槛太高无从下手? 你是否也曾想象参与开发 MySQL 这 ...
- All Eyes on Docs! 练就火眼金睛,就来StarRocks 极客营
开放源代码运动的主要领导者--埃里克·雷蒙(Eric Steven Raymond)在他出版的<大教堂与集市>中描述了这样一个精彩的观点:只要有足够多的眼球关注,就可让所有软件缺陷浮现.他 ...
- 极客新闻——09、如何打造核心骨干团队
本文笔记全部来自<极客新闻>--新鲜的技术资讯.权威的趋势剖析.别样的技术洞察 TGO鲲鹏会会员朱彬发表了主题为"如何打造核心骨干团队"的演讲.结合自身的实战经验,做了 ...
- 极客的Linux常用命令速查手册
Linux常用命令速查手册 1.1 写在前面的话 1.2 Linux 常用命令速查手册 1.2.1 mkdir创建一个文件夹 1.2.2 cd进入一个文件夹 1.2.3 rmdir删除一个文件夹 1. ...
- Springboot-读取核心配置文件及自定义配置文件
读取核心配置文件 核心配置文件是指在resources根目录下的application.properties或application.yml配置文件,读取这两个配置文件的方法有两种,都比较简单. 核心 ...
- 【观察】保险极客:技术创新与平台“进化”,应对企业团险的千变万化
申耀的科技观察 读懂科技,赢取未来! 企业面临最大的威胁不是对手,而是趋势.今天,数字化转型已成为颠覆性力量,很多行业被裹挟其中,或主动或被动,都在惴惴不安地等待一个叫"奇点"的到 ...
- mybatis使用map插入数据和Mybatis的核心配置文件LOG4J
mybatis使用map插入数据 UserMapper.java包中写入 int addUser2(Map<Object,String> map); Usermapper.xml < ...
- hibernate教程--常用配置和核心API详解
一.Hibernate的常用的配置及核心API. 1.1 Hibernate的常见配置: 1.1.1.核心配置: 核心配置有两种方式进行配置: 1)属性文件的配置: * hibernate.prop ...
- hibernate教程--常用配置和核心API
一.Hibernate的常用的配置及核心API. 1.1Hibernate的常见配置: 1.1.1.核心配置: 核心配置有两种方式进行配置: 1)属性文件的配置: * hibernate.proper ...
最新文章
- android之Fragment(官网资料翻译)二
- IOS 中runtime 不可变数组__NSArray0 和__NSArrayI
- 上财的计算机专业408,【2020考研】上财408分经验分享
- lgg8配置_LGG8XThinQ参数配置-LG G8X ThinQ详细性能评测
- 飞鸽传书该如何去优化?
- JDK1.8 中 ConcurrentHashMap源码分析(二)元素添加是线程安全的
- science量子计算机,第一快讯|《Science》量子计算机被证明超越了经典计算机
- PHP 点击局部刷新
- MATLAB五子棋游戏(双人对战,可悔棋)
- 判断浏览器版本加载对应的样式表(文件)
- 如何开通微信小程序在线客服系统?
- 操作系统原理实验(3):操作系统的基石中断与异常
- s60 微信 服务器繁忙,微信Mars — 移动互联网下的高质量网络连接探索
- html:(9):blockquote引用和br换行
- 少儿编程航天主题,scratch与航天航空主题:八大行星排排序
- 苏州大学应用技术学院计算机二级,苏州大学应用技术学院怎么样_苏州大学一本与二本有什么差别...
- 深度学习之3D卷积神经网络
- GithubPages上搭建个人主页
- day1 request的使用
- Java选择题(二十一)
热门文章
- 安卓notification通知的详解
- 2010-11-17
- 批量归一化:减少特征的方差,减小梯度爆炸——对神经网络中间层的输出进行标准化的方法,帮助解决模型的快速收敛、加速训练、防止过拟合等问题
- 《攻防世界》新手区Web(一)
- Navicat远程连接Docker容器中的mysql:报异常,1044 - Access denied for user ‘root‘@‘%‘ to database ‘xxxxxx‘
- 【Unity3D】如何快速做出点击按钮切换场景
- 连接MySql数据库JDBC
- 【经验分享】C51单片机中如何实现printf输出log?
- 华为手机升微信7.0.0后集体Bug 官方称正联合腾讯修复
- java圆和椭圆的关系_实现椭圆结构元素