hibernate学习(4)——实体配置详解
1、实体 编写规则
- 提供一个无参数 public访问控制符的构造器
- 提供一个标识属性,映射数据表主键字段,hibernate以id识别,必须有主键
- 所有属性提供public访问控制符的 set get 方法(javaBean)
- 标识属性应尽量使用基本数据类型的包装类型(能用integer不使用int)
- 不要用final修饰实体 (将无法生成代理对象进行优化
2、 持久化对象的唯一标识 OID
1 Java按地址区分同一个类的不同对象.
2 关系数据库用主键区分同一条记录
3 Hibernate使用OID来建立内存中的对象和数据库中记录的对应关系
结论: 对象的OID和数据库的表的主键对应。为保证OID的唯一性,应该让Hibernate来为OID赋值
3、 区分自然主键和代理主键
主键需要具备: 不为空/不能重复/不能改变
自然主键: 在业务中,某个属性符合主键的三个要求.那么该属性可以作为主键列.
代理主键: 在业务中,不存符合以上3个条件的属性,那么就增加一个没有意义的列.作为主键.
4、 基本数据与包装类型
1 基本数据类型和包装类型对应hibernate的映射类型相同
2 基本类型无法表达null、数字类型的默认值为0。
3 包装类默认值是null。当对于默认值有业务意义的时候需要使用包装类。
5、 普通属性
<hibernate-mapping>
package 用于配置PO类所在包
例如: package="com.itheima.d_hbm"
<class> 配置 PO类 和 表 之间对应关系
name:PO类全限定类名
例如:name="com.itheima.d_hbm.Person"
如果配置 package,name的取值可以是简单类名 name="Person"
table : 数据库对应的表名
dynamic-insert="false" 是否支持动态生成insert语句
dynamic-update="false" 是否支持动态生成update语句
如果设置true,hibernate底层将判断提供数据是否为null,如果为null,insert或update语句将没有此项。
普通字段
<property>
name : PO类的属性
column : 表中的列名,默认name的值相同
type:表中列的类型。默认hibernate自己通过getter获得类型,一般情况不用设置
取值1: hibernate类型
string 字符串
integer 整形
取值2: java类型 (全限定类名)
java.lang.String 字符串
取值3:数据库类型
varchar(长度) 字符串
int 整形
<property name="birthday">
<column name="birthday" sql-type="datetime"></column>
</property>
javabean 一般使用类型 java.util.Date
jdbc规范提供3中
java类型 mysql类型
java.sql.Date date
java.sql.time time
java.sql.timestamp timestamp
null datetime 以上三个类型都是java.util.Date子类 length : 列的长度。默认值:255
not-null : 是否为null
unique : 是否唯一
access:设置映射使用PO类属性或字段
property : 使用PO类属性,必须提供setter、getter方法
field : 使用PO类字段,一般很少使用。
insert 生成insert语句时,是否使用当前字段。
update 生成update语句时,是否使用当前字段。
默认情况:hibernate生成insert或update语句,使用配置文件所有项
注意:配置文件如果使用关键字,列名必须使用重音符
6、主键
<id>配置主键
name:属性名称
access="" 设置使用属性还是字段
column="" 表的列名
length="" 长度
type="" 类型
<generator> class属性用于设置主键生成策略
1.increment 由hibernate自己维护自动增长
底层通过先查询max值,再+1策略
不建议使用,存在线程并发问题
2.identity hibernate底层采用数据库本身自动增长列
例如:mysql auto_increment
3.sequence hibernate底层采用数据库序列
例如:oracle 提供序列
4.hilo:基本不使用
5.native 根据底层数据库的能力选择 identity、sequence 或者 hilo 中的一个。【】 </generator>
##以上策略使用整形,long, short 或者 int 类型
6.uuid 采用字符串唯一值【】
##以上策略 代理主键,有hibernate维护。
7.assigned 自然主键,由程序自己维护
hibernate学习(4)——实体配置详解的更多相关文章
- Struts2学习笔记二 配置详解
Struts2执行流程 1.简单执行流程,如下所示: 在浏览器输入请求地址,首先会被过滤器处理,然后查找主配置文件,然后根据地址栏中输入的/hello去每个package中查找为/hello的name ...
- Struts2学习笔记(二)——配置详解
1.Struts2配置文件加载顺序: default.properties(默认常量配置) struts-default.xml(默认配置文件,主要配置bean和拦截器) struts-plugin. ...
- Hibernate学习笔记--映射配置文件详解
参考资料: http://blog.163.com/hzd_love/blog/static/13199988120108265317988/ http://www.cnblogs.com/often ...
- Redis学习笔记4-Redis配置详解
在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...
- 【SpringCloud微服务实战学习系列】配置详解
前言 Spring Boot针对常用的开发场景提供了一系列自动化配置来减少原本复杂而又几乎很少改动的模板化配置内容. 一.配置文件 Spring Boot的默认配置文件位置为src/main.reso ...
- Java学习02-web.xml配置详解
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...
- (转)Hibernate的配置详解
http://blog.csdn.net/yerenyuan_pku/article/details/65041077 在<Hibernate快速入门>一文中,我有讲到Hibernate的 ...
- Spring学习 6- Spring MVC (Spring MVC原理及配置详解)
百度的面试官问:Web容器,Servlet容器,SpringMVC容器的区别: 我还写了个文章,说明web容器与servlet容器的联系,参考:servlet单实例多线程模式 这个文章有web容器与s ...
- webpack学习(五)配置详解
配置详解 //使用插件html-webpack-plugin打包合并html //使用插件extract-text-webpack-plugin打包独立的css //使用UglifyJsPlugin压 ...
随机推荐
- eclipse下Android无法自动生成apk文件怎么办?
eclipse下Android无法自动生成apk文件怎么办? 现象:创建android工程后,通过手动build/clean或自动build均无法在bin文件夹下生成.apk文件 解决方法:进入win ...
- Excel 如何引用某表格中的某一列作为数据有效性验证
1. 首先把数据有效性的列表加入到某个表格中.如下图所示:此表格名称为表5 2. 然后定义名称:公式--定义名称 如下填入信息: 3. 然后再数据有效性验证中输入如下信息即可:
- CUDA程序设计(二)
算法设计:直方图统计 直方图频数统计,也可以看成一个字典Hash计数.用处不是很多,但是涉及CUDA核心操作:全局内存.共享内存.原子函数. 1.1 基本串行算法 这只是一个C语言练习题. #def ...
- Android权限(转)
http://www.cnblogs.com/classic/archive/2011/06/20/2085055.html 访问登记属性 android.permission.ACCESS_CHEC ...
- OpenResty+lua+GraphicsMagick生成缩略图
1.安装GraphicsMagick 下载地址:http://sourceforge.net/projects/graphicsmagick/files/graphicsmagick/1.3.19/G ...
- BZOJ4517: [Sdoi2016]排列计数
Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是 ...
- BZOJ4515: [Sdoi2016]游戏
Description Alice 和 Bob 在玩一个游戏. 游戏在一棵有 n 个点的树上进行.最初,每个点上都只有一个数字,那个数字是 123456789123456789. 有时,Alice 会 ...
- 隐藏Jquery dialog 按钮
$(".ui-dialog-buttonpane button").hide(); //隐藏dialog中所有button $(".ui-dialog-buttonpan ...
- 用js读写cookie的简单办法
/* 功能:保存cookies函数 参数:name,cookie名字:value,值 */ function SetCookie(name,value){ var Days = 30*12; //co ...
- Defining custom settings in Odoo
Unfortunately Odoo documentation doesn’t seem to include any information about adding new configurat ...