今天是学习Hibernate的第三天,主要分析一下Hibernate的配置文件中的信息

Hibernate中的配置文件有两种,第一种是主配置文件hibernate.cfg.xml,第二种是映射配置文件Student.hbm.xml

一.主配置文件

首先主配置文件的文件名一般为hibernate.cfg.xml,存放在工程的src目录

配置文件中主要存在三类信息

1.数据库的信息

2.其他参数

3.加载映射文件

所有的配置信息都存放在<session-factory>的标签下

配置参数:

1.<property name="dialect">方言配置,hibernate在运行时,会根据不同的方言生成符合当前数据库语法的SQL

数据库的三个方言参数:

#hibernate.dialect org.hibernate.dialect.MySQLDialect

#hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect

#hibernate.dialect org.hibernate.dialect.MySQLISAMDialect

mysql数据库使用第一个方言参数

2.<property name="connection.url">jdbc:mysql://localhost:3306/student</property>数据库路径、地址配置,主要用于表示数据库的路径和地址

3.<property name="show_sql">true</property>表示Hibernate在运行时是否打印sql语句,参数为true时打印sql语句

4.<property name="format_sql">true</property>表示在打印sql之前,先将sql语句进行格式化

5.<property name="hbm2ddl.auto">update</property>hbm2ddl.auto用于自动生成表结构,如果数据库中没有表,会自动生成一个新的表结构

生成表结构的策略

(1)# hibernate.hbm2ddl.auto update(最常用取值):如果当前数据库不存在表的结构,那么会自动创建表结构。如果存在表结构,并且表结构与实体一致,则不做修改。如果存在表结构,并且表结构与实体不一致,那么会修改表结构,保留原有列。

(2)# hibernate.hbm2ddl.auto create(使用很少):无论是否存在表结构,每次启动hibernate自动生成表结构,会丢失数据

(3)# hibernate.hbm2ddl.auto create-drop(使用极少) 无论是否存在表结构,每次hibernate运行结束删除表结构

(4)# hibernate.hbm2ddl.auto validate(使用很少) 不会自动创建表,也不会自动维护表,只负责检验表结构,表结构不一致时,抛出异常。

6.<property name="connection.username">root</property>连接数据库的用户名

7.<property name="connection.password">123</property>连接数据库的密码

8.<property name="connection.driver_class">com.mysql.jdbc.Driver</property>连接数据库的驱动包

9.<property name="hibernate.connection.autocommit">true</property>设置Hibernate自动提交

10.<property name="hibernate.current_session_context_class">thread</property>将session与线程绑定,只有配置了改属性,才能使用getCurrentSession

加载映射文件

可以使用<mapping>标签的resource属性进行加载映射文件

<mapping resource="com/zk/Student/Student.hbm.xml">

二.映射配置文件

映射文件:映射一个实体类的对象;描述一个对象最终实现可以直接保存对象数据到数据库中

通常的,我们都是一个JavaBean对象对应一个映射配置文件,并且配置文件和JavaBean对象放在同一个目录下。

映射配置文件下的节点

hibernate-mapping节点

常用属性:

1.class节点

class映射某一个对象(一般情况,一个对象写一个映射文件,即一个class节点)

常用属性:

(1) name 指定要映射的对象的类型

(2)table 指定对象对应的表 如果没有指定,默认与对象名称一样

2.property节点 property是普通属性的映射,即JavaBean普通的成员变量属性

常用属性:

(1)name 指定对象的属性名称,user对象中标识主键的属性名称

(2)column 指定对象属性对应的表的列字段名称,如果不写默认与对象属性一致,主键在表中的列名,如果列名为数据库关键字,需要用反引号或改列名。

(3)length 指定列的数据长度,默认为255

(4)type 指定映射表的字段类型,如果不指定会匹配属性的类型,表达类型属性 

.java类型:必须写全名

2.hibernate类型:直接写类型,都是小写

3.数据库类型

(5)unsaved-value(不推荐):指定主键为什么值,当做null处理

(6)access(强烈推荐不要使用):field

(7)precision:小数点后的精度

(8)scale:有效位数

(9)insert:该属性是否加入insert语句,一般不用

(10)update:该属性是否加入update语句,一般不用

(11)not-null:指定属性值是否使用非空 true/false

(12)unique:指定属性的约束是否唯一true/false

3.id节点

id是主键映射(1)name指定对象的属性名(2)column指定对象属性对应的表的字段名称

<id>下的子节点<generator class=""/>

主键的自动生成策略

(1)identity自增长(mysql,db2),依赖与数据主键的自增功能

(2)sequence自增长(序列),依赖于数据中的序列功能,Oracle中自增长是以序列方法实现,仅在oracle数据库中实现。

如果是mysql数据库,采用自增长方式是identity

如果是oracle数据库,采用sequence序列的方式实现自增长

(3)native自增长,由数据库维护主键,自动根据数据库判断,会根据底层数据库自增长的方式选择identity或sequence和hilo(在设置了<generator class="native">之后,需要删除数据库中的表然后重新运行hibernate),它会建立一张新的表,并自增主键。

(4)increment自增长,数据库自己生成主键,先从数据库中查询最大的id值,将id值加1作为新的主键(会有并发访问的问题,一般在服务器集群环境使用会存在问题。),数据库中要先取消掉数据库本身的自增属性,再设置数据库的自增长属性。

(5)assigned  自己指定主键值,当表的主键是自然主键时。

(6)uuid foreign(外键的方式,one-to-one讲),生成32位不重复随机字符串当做主键

(7) hilo hibernate自己实现序列算法,自己生成主键 Hibernate自动生成一系列不重复的数值(用的很少)

Hibernate第三天-Hibernate主配置信息的更多相关文章

  1. Hibernate第三篇【主配置文件、映射文件、复合主键映射】

    前言 目前已经学了如何搭建Hibernate的开发环境,以及Hibernate对应的API了-在快速入门还没讲解的就是配置文件是怎么配置的.因此,本博文主要讲解主配置文件以及映射配置文件.. 主配置文 ...

  2. Hibernate(三)Hibernate 配置文件

    在上次的博文Hibernate(二)Hibernate实例我们已经通过一个实例的演示对Hibernate 的基本使用有了一个简单的认识,这里我们在此简单回顾一下Hibernate框架的使用步骤. Hi ...

  3. Java程序员从笨鸟到菜鸟之(五十二)细谈Hibernate(三)Hibernate常用API详解及源码分析--csdn 曹胜欢

    新接触一个框架的目的就是想利用这个框架来为我们做一些工作,或者是让他来简化我们的工作,利用这个框架无非就是要利用这个框架所给我们提供的API去操作我们的数据,所以利用一个框架的好坏很大一部分取决于你对 ...

  4. udhcp源码详解(三) 下 之配置信息的读取

    上节讲解了read_config函数,读取配置信息到server_config的相应成员变量里,但read_config函数只负责把配置信息重文件里读出来,具体怎么把信息填写到指定的地址内,是调用ke ...

  5. udhcp源码详解(三)上 之配置信息的读取

    上节介绍了存储管理配置信息的结构体struct server_config_t,该结构体贯穿整个server端程序的运行. 在dhcpd.c里的用该结构体定义个一个全局的变量: struct serv ...

  6. hibernate(三)检索属性配置

    检索即对象的获取:获取的时机和和方式:减少没必要的内存占用,尽量少的sql语句减少多余数据库的访问 一:类级别的检索:load() 和属性<class lazy=true> .无论 < ...

  7. 11g RAC集群启动关闭、各种资源检查、配置信息查看汇总。

    简要:一:集群的启动与关闭 1. rac集群的手动启动[root@node1 bin]# ./crsctl start cluster -all2. 查看rac集群的状态[root@node1 bin ...

  8. 初识Hibernate的主配置和映射配置

    Hibernate.cfg.xml 主配置 Hibernate.cfg.xml 主配置文件夹中主要配置:数据库链接配置,其他参数配置,映射信息等. 常用配置查看源码: hibernate-distri ...

  9. Hibernate学习笔记(三)Hibernate生成表单ID主键生成策略

    一. Xml方式 <id>标签必须配置在<class>标签内第一个位置.由一个字段构成主键,如果是复杂主键<composite-id>标签 被映射的类必须定义对应数 ...

随机推荐

  1. 打铁选手的 CDQ分治 刷题记录

    BZOJ3262 模板题,三位偏序. 注意第一维排完序之后再给二三维排序的时候还是要考虑下第一维的:如果二三维都相等的话第一维小的要在前面 代码: #include <bits/stdc++.h ...

  2. 小I的小姐姐

    小 I 的小姐姐 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 小 I 去天津玩啦,一路上,他跟他的同学发生了许多有趣 ...

  3. keepalived高可用工具

    1.准备俩台虚拟机,一台主机,一台备机 我这里模拟的是 主机ip: 192.168.42.66 masternginx 备机ip: 192.168.42.77 slavenginx 虚拟ip: 192 ...

  4. vue源码的入口(四)

    我们之前提到过 Vue.js 构建过程,在 web 应用下,我们来分析 Runtime + Compiler 构建出来的 Vue.js,它的入口是 src/platforms/web/entry-ru ...

  5. Java基本语法--控制台输入(Scanner类)

    通过Scanner类获取用户输入时,控制台会一直等待用户的输入,可以输入不同类型的值.本篇博客主要讲解从控制台输入值,即Scanner类的使用方法. Api文档中关于Scanner类的构造方法 键盘输 ...

  6. .netcore 3.1高性能微服务架构:加入swagger接口文档

    本文为原创文章:首发:http://www.zyiz.net/tech/detail-108663.html swagger是什么? Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视 ...

  7. AntDesign(React)学习-4 登录页面提交数据简单实现

    github代码:https://github.com/zhaogaojian/jgdemo 全国肺炎,过节期间没地方去在家学习antd. 一.感觉antd pro项目太庞大了,可以学习下结构和代码风 ...

  8. Docker+JMeter单机版+MinIO

    基于JMeter5.1.1+MinIO JMeter发起压测  MinIO作为文件服务器 一.目录结构: Dockerfile文件: FROM ubuntu:18.04# 基础镜像 MAINTAINE ...

  9. 虚拟机win7 安装过程中遇到虚拟工具安装失败

    如果遇见这样的问题 倘若你用的是这样的镜像:cn_windows_7_enterprise_x64_dvd_x15-70741.iso 换镜像源.换镜像源.换镜像源! 换成带sp1的iso镜像:cn_ ...

  10. 动态规划 ---- 最长不下降子序列(Longest Increasing Sequence, LIS)

    分析: 完整 代码: // 最长不下降子序列 #include <stdio.h> #include <algorithm> using namespace std; ; in ...