hibernate系列0402上午02配置文件_第1页
hibernate系列0402上午02配置文件_第2页
hibernate系列0402上午02配置文件_第3页
hibernate系列0402上午02配置文件_第4页
hibernate系列0402上午02配置文件_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北京传智播客教育 Hibernate配置文件李 若 亮北京传智播客教育 Hibernate数据模型POJOHibernate数据模型用于封装数据,开发时候需要遵从如下规范提供公共无参的构造方法(可使用自动生成的)如果使用投影技术,一定要显式声明公共无参的构造方法提供一个标识属性,作为对象的主键,映射数据库表主键通常使用uuid作为主键对所有其他属性进行私有化声明,并进行标准封装属性声明时使用封装类模型,避免使用基本数据类型不要使用final修饰符(否则将无法生成代理对象进行优化)北京传智播客教育 持久化对象唯一标识OID数据库中使用主键可以区分两个数据是否相同Java语言中使用对象的内存地址区

2、分对象是否相同Hibernate中使用OID区分对象是否相同Hibernate认为每一个不同的对象应该具有一个唯一的标识,称这个标识为OID北京传智播客教育 OID的选取规则Java对象中可以使用任意属性作为OID,为什么要使用uuid作为唯一标识自然主键:具有业务含义例如个人信息中的身份证号,不仅是唯一的,而且还具有业务含义,这种属性虽然可以做为OID,但是其具有一定的业务含义。选择OID尽量避免使用具有业务含义的属性代理主键:不具有业务含义声明一个不具有任何业务含义的属性,仅用于区分对象,这种属性即便暴漏给最终用户查看,也不具有安全隐患OID选择应尽量避免使用自然主键,改用代理主键北京传智

3、播客教育 对象属性的类型选择Java对象中的属性描述对象具有的状态,在对状态进行描述时,应避免使用基本数据类型,改用对应的封装类模型基本数据有一个默认值的特点,特性在对象数据封装时存在着数据隐患,一旦基本数据类型取值为默认值,开发者将无法区分该值是用户输入数据还是未输入数据由系统默认给出封装类数据类型可以使用是否为null来判定该数据是来自于用户输入还是未输入北京传智播客教育 Hibernate配置文件分类Hibernate配置文件分为两大类映射配置文件 (多个)*Model.hbm.xml系统配置文件 (一个)hibernate.cfg.xml北京传智播客教育 Hibernate映射配置hb

4、m.xml(重点)Hibernate映射配置文件用于配置Hibernate框架中使用的模型类与数据库表间的关系,共包含4个部分类与表的映射主键的映射属性与字段的映射关系的映射 (后面详细讲解)北京传智播客教育 Hibernate映射配置(了解)Hibernate中可以不使用*.hbm.xml的命名格式,可以写成任意的XML格式,但是框架推荐使用标准格式来进行映射文件的命名,同时标准的命名格式还可以兼容手动添加映射对象的格式北京传智播客教育 一级子元素class(类与表的映射)class元素用于指定对象关系映射中的类与表的关系name:模型类的全路径名格式table:数据库表名schema:数据

5、库名如果配置该属性,在数据库连接配置中可省去数据库名配置;如果不配置该属性,则使用连接字符串url中配置的数据库北京传智播客教育 class子元素id(主键的映射)主键映射要配置数据模型OID与数据库表主键关系常用属性name:数据模型中的OID,通常使用uuid属性(必须)column:数据库表的主键,通常使用uuid字段(可选)如省略column配置,则默认column值与name值相同其他属性type:标识属性或字段的类型(兼容Java、DB、Hibernate类型)length:标识数据库字段的长度上述两个属性主要用于配合自动生成DDL语句使用北京传智播客教育 id子元素generat

6、or(主键生成策略)手工控制assigned(不限制类型)数据库自动生成uuid(字符串类型)increment(整型数值类型)identity (整型数值类型)sequence (整型数值类型)native(整型数值类型)北京传智播客教育 assignedassigned策略是由程序员手工控制输入数据模型OID的一种id生成策略assigned策略不限定数据库中id字段的类型assigned策略无法保障id的不重复性assigned策略通常配合外部自定义的id生成策略使用,否则将具有很大的风险性北京传智播客教育 uuid(Universally Unique Identifier)uuid策

7、略是由以下4种数据联合计算得出的一种OID生成策略IP地址JVM启动时间(精确到250ms)当前系统时间JVM提供的计数器(保障唯一)uuid策略要求数据库中id字段为字符串类型uuid策略可以保障id的唯一性,因此不具有风险性 北京传智播客教育 incrementincrement策略是由Hibernate内部控制生成OID的一种id生成策略increment策略要求数据库中id字段为整型数值类型increment策略首先从对应数据库表中取出当前已使用的最大id值max,然后在此基础上+1,提供给当前要操作数据,完成主键唯一性增长,可兼容数据库increment策略虽然可以保障id的唯一性,

8、但是如果多个连接同时对一个表进行操作时,可能获取到相同的max值,导致相同id的出现,因此需要更多的配置,来控制数据库的并发策略不推荐使用鉴定完毕北京传智播客教育 identityidentity策略是由数据库底层控制生成OID的一种id生成策略identity策略要求数据库中id字段为整型数值类型,并且要求设置成自增特性identity只能应用于数据库提供主键自增策略的数据库实现,不能全兼容所有数据库,MySQL可用identity策略由数据库底层实现,即便申请了一个id不使用,也不影响下一个id的获取,因此线程安全北京传智播客教育 sequencesequence策略是由数据库底层控制生成

9、OID的一种id生成策略sequence策略要求数据库中id字段为整型数值类型sequence只能应用于提供序列支持的数据库实现,不能全兼容所有数据库,Oracle可用sequence策略由数据库底层实现,id生成控制交由数据库管理,是线程安全的策略北京传智播客教育 nativenative策略是一种设计性OID生成策略native会根据你所使用的数据库类型,在下列各种生成策略中自动选择对应的id生成策略identitysequencehilo北京传智播客教育 复合主键/联合主键/多主键(了解)复合主键指在一个数据模型使用两个或两个以上的属性来作为唯一性标识用于区分数据复合主键在目前的开发中极

10、少使用,主要是为了兼容早期的遗留系统复合主键开发方式:注意:复合主键与主键只能选择其中一种使用北京传智播客教育 class子元素property(属性与字段映射)常用属性name:数据模型中的属性名,也就是Java字段名(必须)column:数据库表的字段名(可选)如省略column配置,则默认column值与name值相同其他属性type:标识属性或字段的类型(兼容Java、DB、Hibernate类型)length:标识数据库字段的长度not-null:是否为空unique:是否唯一北京传智播客教育 属性与字段的映射要配置数据模型中声明的属性与字段之间的对应关系,共有以下三种格式格式一:格

11、式二:格式三:property格式格式三是将格式一或二中有关数据库相关的属性单独配置成子元素北京传智播客教育 Hibernate映射配置北京传智播客教育 Hibernate系统配置cfg.xml(重点)Hibernate系统配置文件用于配置Hibernate框架的系统设置信息,共包含4个部分数据库连接的配置可选配置资源注册二级缓存(后面详细讲解)北京传智播客教育 数据库连接配置hibernate.connection.driver_classJDBC驱动类类名hibernate.connection.urlJDBC连接字符串hibernate.connection.usernameJDBC连接

12、用户名hibernate.connection.passwordJDBC连接用户名对应的密码提示:在进行hibernate系统配置时,属性名前面的hibernate.可以省略不写北京传智播客教育 属性配置格式:属性值配置范例数据库连接的配置还可以使用数据源的格式进行,需要依赖服务器提供对应的数据源设置(扩展资料)数据库连接配置北京传智播客教育 数据库连接池配置(了解)数据库连接池中连接的数量可以通过配置进行修改hibernate.connection.pool_size数据库连接池最大连接数量数据库连接配置中还可以进行连接池的配置Hibernate默认使用自带的连接池技术,还可以通过配置的形式

13、使用外部连接池完成自定义的连接池设置北京传智播客教育 数据库连接池配置c3p0连接池配置首先需要导入c3p0相关的jar包Hibernate资源包lib包下的optional包下,查找c3p0相关jar包然后在配置中添加相关配置信息只要添加任意一条相关配置,c3p0连接池将开启配置完成后可通过hibernate启动日志查看相应的配置c3p0配置不能省略前面的hibernate.属性名北京传智播客教育 可选配置Hibernate提供有多种针对系统配置的信息内容,可以根据使用需要,进行配置,每种配置信息都存在有一个默认值,如果不进行配置,将设置成默认值可选配置的选择之惑Hibernate作为一种数

14、据层框架,目标是为了帮助开发者尽可能的减少操作,如果所有配置都需要用户自己手工进行,莫不如使用JDBC进行编程,因此大量的配置开发中采用默认值,需要针对某种设置进行修改时,才进行手动修改北京传智播客教育 可选配置(必选)hibernate. dialect (可选配置中的必选配置)方言:所谓方言是为了区别各种不同数据库在生成SQL语句时使用不同的策略,如分页查询数据时,使用的关键字是不相同的,因此要针对使用的数据库配置对应的方言北京传智播客教育 可选配置(常用)hibernate.show_sql设置是否将执行过程中运行的SQL语句输出到控制台开发阶段开启此属性,上线阶段关闭此属性hibern

15、ate.format_sql设置show_sql属性打印出的SQL语句以分行的格式进行显示北京传智播客教育 自动生成表结构(了解)Hibernate提供通过映射配置文件自动生成表结构步骤:首先,需要保障在映射文件中,对所有的字段进行了格式限定,必有属性为type,其他属性可根据需要自主选择然后,在cfg.xml文件中配置自动生成表结构的语句,该配置属于可选配置北京传智播客教育 自动生成表结构(了解)自动生成表结构策略validate:加载hibernate时,验证创建数据库表结构create:每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因create-drop:加载hibernate时创建,退出时删除表结构update:加载hibernate自动更新数据库结Hibernate进行数据库表操作时,根据配置信息自动生成对应数据库表结构。实际开发过程中,往往表结构都是提前设计的,该配置不具有实用性。北京传智播客教育 自动提交事务(了解)Hibernate提供通过映射配置文件实现事务自动提交在cfg.xml文件中配置自动提交事务注意:自动提交事务设置开启后,每次操作将对应一个独立的事务,也就是说同一个Session过程中,可以存在有多个事务事务的提交与控制应该由业务决定,而不能每个独立的增删改

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论