Hibernate入门(三)之持久化类编写规则
来源:互联网 发布:电脑编程自学 编辑:程序博客网 时间:2024/06/05 15:38
什么是持久化类?
Hibernate是持久层的ORM映射框架,专注于数据的持久化工作。所谓的持久化,就是将内存中的数据永久的存储到关系型数据库中。那么知道了什么是持久化,什么又是持久化类呢?其实持久化类就是一个Java类与数据库表建立了映射关系,那么这个类称为是持久化类。其实你可以简单的理解为持久化类就是一个Java类有了一个映射文件与数据库的表建立了关系。
持久化类的编写规则
持久化类需要提供无参构造。
因为在Hibernate底层需要使用反射生成类的实例。持久化类的属性需要私有,并提供get & set方法。
因为在Hibernate底层会将查询到的数据进行封装。持久化类的属性要尽量使用包装类的类型。
因为包装类和基本数据类型的默认值不同,包装类的类型予以描述更清晰而基本数据类型不容易描述。举个例子:假设表中有一列员工工资,如果使用double类型,如果这个员工工资忘记录入到系统中,系统会将默认值0存入到数据库,如果这个员工工资被扣完了,也会向系统中存入0。那么这个0就有了多重含义,而如果使用包装类类型就会避免以上情况,如果使用Double类型,忘记录入工资就会存入null,而这个员工工资被扣完了,就会存入0,不会产生歧义。
持久化类要有一个唯一标识OID与表的主键对应。
因为Hibernate需要通过这个唯一标识OID区分在内存中是否是同一个持久化类。在Java中通过地址区分是否是同一个对象,在关系型数据库的表中是通过主键区分是否是同一条记录。Hibernate就是通过这个OID来进行区分的。Hibernate是不允许内存中出现两个OID相同的持久化对象的。持久化类尽量不要使用final进行修饰。
Hibernate中有延迟加载的机制。这个机制中会产生代理对象,Hibernate产生代理对象使用的是字节码的增强技术完成的,其实就是产生了当前类的一个子类对象实现的。如果使用了final修饰持久化类,就不能产生子类,从而不会产生代理对象,那么Hibernate的延迟加载策略(一种优化手段)就会失效。
Hibernate的主键的类型
- 自然主键
把具有业务含义的字段作为主键,称之为自然主键。比如在一个goods表中,如果把商品名name作为主键,其前提条件必须是:每一个商品的名字不允许为null,不允许重名,并且不允许修改商品名。尽管这也是可行的,但是不能满足不断变化的业务需求,一旦出现了允许客户重名的业务需求,就必须修改数据模型,重新定义表的主键,这给数据库的维护增加了难度。 - 代理主键
把不具备业务含义的字段作为主键,称之为代理主键。该字段一般取名为“ID”,通常为整数类型,因为整数类型比字符串类型要节省更多的数据库空间。
Hibernate的主键生成策略
Hibernate中提供了几个内置的主键生成策略,其常用主键生成策略的名称和描述如下:
- Hibernate入门(三)之持久化类编写规则
- Hibernate持久化类编写规则
- Java对象持久化技术之Hibernate入门之三
- Hibernate入门(四)之持久化对象的三种状态
- Hibernate从入门到放弃(三)----持久化对象
- 【4】Hibernate持久化类的编写
- Java对象持久化技术之Hibernate入门之二
- 三、Hibernate数据持久化
- Java对象持久化技术之Hibernate入门
- Java对象持久化技术之Hibernate入门之一
- Hibernate之持久化对象的三种状态
- Hibernate的学习之路八(持久化类)
- 初识Hibernate之理解持久化类
- 初识Hibernate之理解持久化类
- Redis持久化之AOF(三)
- Redis 持久化之AOF(三)
- Redis系列之持久化(三)
- Hibernate学习之 -- 使用Middlegen-Hibernate-r5创建oracle10g的table的hibernate映射文件,Hibernate学习笔记三 ---持久化类和关系数据
- 在CLion中添加Qt的工具,方便取代Qt Creator
- Java 操作mysql数据库中时间字段
- C++——又是黑白棋
- 优雅的嵌套滑动解决方式-NestedScroll
- 当下流行的金融词汇
- Hibernate入门(三)之持久化类编写规则
- 无法远程连接阿里云mysql数据库的解决办法
- C语言选择结构与循环结构逆向分析
- 3.为什么深度学习会飞速发展
- [微信小程序]学习笔记
- (tmp———)Makefile 中 := ?= += = 的区别
- POJ 2240---Arbitrage(Floyd的dp思想)
- U盘安装CentOS7的最终解决方案
- 放大电路1