普通属性指的是基本数据类型及其包装类型、java.lang.String、java.util.Date。
Hibernate使用<property/>元素映射普通属性。
<property name="" type="" column="" length="" not-null="true" unique="false" access="" lazy="false" insert="true" update="true" formula="" generated="never" optimistic-lock="true" precision="" scale="" unique-key="" index="" node=""/>
name:属性名
type:属性的类型
column:属性映射的字段的字段名
length:属性映射的字段的长度
not-null:是否允许为空(true或false)
unique:是否为该属性映射的字段添加唯一性约束
------------------------------------------------------------
access:属性访问策略(property或field)
lazy:是否启用延迟加载(true或false)
insert:Hibernate生成的insert语句中是否需要包含该字段,
如果该字段的值无需有Hibernate生成(由触发器或其他程序生成),则可将该值设为false
update:Hibernate生成的update语句中是否需要包含该字段,
如果该字段的值无需有Hibernate生成(由触发器或其他程序生成),则可将该值设为false
------------------------------------------------------------------------------------------------------------
formula:指定一个sql表达式,表明该属性的值将根据表达式来计算,
如果为formula指定sql表达式,生成的数据表中将没有和该属性对应的字段
generated:该属性映射的字段的值是否由数据库生成,
可选值有never(不有数据库生成)、
insert(对应字段的值在insert时生成,但不会在update时重新生成)、
always(对应字段的值在insert和update时都会重新生成)
----------------------------------------------------------------------------------------------
optimistic-lock:该熟悉在进行更新时是否需要使用乐观锁定
----------------------------------------------------------------------------------------------
precision:对数值类型的字段有效,指定有效数字的位数
scale:对float、double、decimal等类型的字段有效,指定字段的小数位数
----------------------------------------------------------------------------------------------
unique-key:指定一个唯一键的名称,
当系统需要Hibernate自动建表时,用于为对应的字段创建唯一索引,
只有当对应字段具有唯一性约束时才有效
index:指定一个字符串的索引名称,
当系统需要Hibernate自动建表时,用于为对应的字段创建索引,从而加速基于该字段的查询
-----------------------------------------------------------------------------------------------------------
node:暂时还不清楚
1、映射基本数据类型及其包装类型
<property name="byteNum" type="java.lang.Byte" column="byte_num"/> <property name="shortNum" type="java.lang.Short" column="short_num"/> <property name="intNum" type="java.lang.Integer" column="int_num"/> <property name="longNum" type="java.lang.Long" column="long_num"/> <property name="floatNum" type="java.lang.Float" column="float_num"/> <property name="doubleNum" type="java.lang.Double" column="double_num"/> <!--除了指定了length属性,与上面的代码没有区别--> <property name="byteNum1" type="java.lang.Byte" column="byte_num_1" length="2"/> <property name="shortNum1" type="java.lang.Short" column="short_num_1" length="3"/> <property name="intNum1" type="java.lang.Integer" column="int_num_1" length="5"/> <property name="longNum1" type="java.lang.Long" column="long_num_1" length="10"/> <property name="floatNum1" type="java.lang.Float" column="float_num_1"/> <property name="doubleNum1" type="java.lang.Double" column="double_num_1"/>
2、映射java.lang.String
<!--type属性使用java数据类型指定--> <property name="firstName" type="java.lang.String" column="first_name"/> <!--type属性使用Hibernate内置数据类型指定,同时指定length属性--> <property name="lastName" type="string" column="last_name" length="100"/>
3、映射java.util.Date
java.util.Date可以被映射成SQL的date类型、time类型、datetime类型。
<!-- type属性为date,将被映射成SQL的date类型 --> <property name="date" type="date" column="DATE"/> <!-- type属性为time,将被映射成SQL的time类型 --> <property name="time" type="time" column="TIME"/> <!-- type属性为timestamp,将被映射成SQL类型 --> <property name="timestamp" type="timestamp" column="TIMESTAMP"/>