1、@entity修饰一个实体类,接受一个name属性作为该实体类名称,可省略默认为该类名
2、@Table指定持久化类所映射的表名,可接受以下属性
catalog:可省略,用于设置将持久化类所映射的表放入指定的catalog中,若省略,则放入默认的catalog中。
indexs:可省略,为持久化类设置索引,属性值为一个@index注解数组
@index :用于为数据表设置索引,接受以下熟悉
columnList :不可省略,设置对那些列建立索引,可指定多个数据列,指定多个列时用逗号将多个列隔开。如:@Index(columnList = "id,name,pass"),同时为id,name,pass设置索引。
name:索引名,可省略
unique:可省略,设置该索引是否唯一,只能取,true 或false,默认true
name: 该实体类所映射的表名,若省略,默认与类名一致。
schema:将该持久化所映射的表放入schema中,若省略则放入默认schema中。
uniqueConstraints:为持久化类所映射的表指定唯一约束,值为一个@UniqueConstraint注解数组。可省略。
@UniqueConstraint:为数据表制定唯一约束,需指定一个columnNames属性,该属性为一个字符串数组。
3.@Access用于改变Hibernate的属性访问策略,属性支持AccessType.PROPERTY, AccessType.FIELD,默认为AccessType.PROPERTY
AccessType.PROPERTY:使用getter/setter方法访问属性。
AccessType.FIELD:直接通过成员变量访问属性。
4.@DynamicInsert:指定用于插入时的SQL语句是否在运行是动态生成,并且只插入那些非空字段,默认false,开启将导致hibernate花费更多时间来生成SQL语句。
5.@DynamicUpdate:指定用于更新时的SQL语句是否在运行是动态生成,并且只更新那些变过字段,默认false,开启将导致hibernate花费更多时间来生成SQL语句。
6.@SelectBeforeUpdate:指定hibernate在更新时持久化对象时是否先进行一次查询,默认false。若查询的状态与当前状态一致则不会调用update保存状态。
7.@Where:该注解的clause属性可指定一个附加的SQL语句过滤条件,即在采用load()或者get()和其他查询方法时,只有符合该where条件的才会被加载。该注解只会在查询时生效。
8.@BatchSize:当hibernate抓取集合或者延迟加载时,指定每次加载size数量。
9.@OptimisticLocking:指定乐观锁策略,该注解的type属性接受
OptimisticLockType.VERSION:检查version/timestamp字段
OptimisticLockType.ALL:检查全部字段
OptimisticLockType.DIRTY:之检查修改过的字段
OptimisticLockType.NONE:不使用乐观锁
默认为:OptimisticLockType.VERSION
10.@Check:通过属性constraints指定一个SQL表达式,用于给对应的表指定一个check约束。
二、属性注解
1、@column指定某个属性所映射的数据列的详细信息。接受一下常用属性
属性 | 是否必须 | 说明 |
columnDefinition | 否 | 值代表一个列定义的SQL字符串,指定传见该数据列的SQL语句 |
insertable | 否 | 指定该列是否在默认生成的iinsert语句中,默认true |
length | 否 | 指定该列最大保存的数据长度默认255 |
name | 否 | 指定该列的列名默认与@Column修饰的 |
nullable | 否 | 指定该列是否允许为null,默认true |
precisoon | 否 | 当该列是decimal类型时,该属性指定该列的最大有效数字位 |
scale | 否 | 当该列是decimal类型时,该属性指定该列的最大的小数位数 |
table | 否 | 指定该列所属的表名。用多个表保存一个实体时需要该属性。 |
unique | 否 | 指定该列是否需要唯一属性,默认false |
updatable | 否 | 指定该列是否包含在hibernate所生成的update语句列表中,默认true |
2、@Formula:该注解的value属性接受一个SQL表达式,被该注解修饰的字段会根据此SQL计算,持久化表中没有与此属性对应的列。该属性只会在读取是生效
注意:value=“(SQL)”中的括号不可省略
SQL中的列名与表名都应与数据库中的表名和列名对应
在SQL中使用参数可以直接将当前类的属性传入
3、@Generated:设置该属性映射的列的值是否又数据库生成,该注解的value可接受GenerationTime.NEVER(不有数据库生成),GenerationTime.ALWAYS(插入和更新时均生成),GenerationTime.INSERT(只在插入时更新),该属性需要底层数据库中有相应的触发器。在数据库生成后会读取这些值。
4、@Transient:用来修饰不想持久保存的属性。
5、@Enumerated:修饰枚举类型,该注解的value属性接受EnumType.STRING(底层保存字符串)和EnumType.ORDINAL(底层保存编号)
6、@Lob,@Basic:修饰大数据类型属性(Clob,Blob),当属性为byte[],Byte[],java.io.Serializable类型时@Lob会在底层映射Blob列,当属性为char[],Character[],java.lang.String时@Lob会在底层映射为Clob列。
@Basic接受下面两个属性:
fetch:是否延迟加载,该属性接受FetchType.EAGER(立即加载)、FetchType.LAZY(延迟加载)
optional:指定映射列是否允许使用null。
7、@Temporal:用于修饰日期类型,该注解的value接受三个值:
TemporalType.TIME(只取时间部分),TemporalType.DATE(只取日期部分),TemporalType.TIMESTAMP(时间戳)
三、主键生成相关
对于主键使用@Id简单标注即可,不需要任何属性
可使用@GeneratedValue来修饰实体的标记属性,可指定如下属性:
strategy:指定hibernate的主键生成策略,可以省略,接受下列四个值:
GenerationType.AUTO自动选择合适的底层数据库逐渐生成策略,这是默认值。
GenerationType.INDENTITY:对于MYSQL,SQL Server这样的数据库,选择自增长的生成策略。
GenerationType.SEQUENCE:对于Oracle这样基于Sequence的主键生成策略。应与@SequenceGenerator一起使用。
GenerationType.TABLE:使用辅助表来生成主键,应与@TableGenerator一起使用。
generator:当使用GenerationType.SEQUENCE或GenerationType.TABLE时指定生成器的名称。
对于@SequenceGenerator可指定下表属性:
属性 | 是否必须 | 说明 |
name | 是 | 指定该主键生成器的名称 |
catalog | 否 | 用于设置将持久化类所映射的表放入指定的catalog中,若省略,则放入默认的catalog中。 |
schema | 否 | 用于设置将持久化类所映射的表放入指定的schema中,若省略,则放入默认的schema中。 |
initialValue | 否 | 指定底层Sequence的初始值。对于Oracle该属性指定的整数值将作为定义Sequence时的start with值 |
sequenceName | 否 | 指定底层Sequence的名称 |
allocationSize | 否 | 指定底层Sequence每次生成主键值的个数。 |
对于@TableGenerator可指定下表属性,该注解会在底层数据库中额外生成一个辅助表。
uniqueConstraints | 否 | 该属性为一个@UniqueConstraint数组,用于为辅助表创建唯一约束 |
name | 是 | 指定该主键生成器的名称 |
allocationSize | 否 | 指定底层辅助表每次生成主键值的个数 |
catalog | 否 | 用于设置将持久化类所映射的表放入指定的catalog中,若省略,则放入默认的catalog中 |
schema | 否 | 用于设置将持久化类所映射的表放入指定的schema中,若省略,则放入默认的schema中 |
table | 否 | 指定辅助表的名称 |
initialValue | 否 | 将指定值作为底层辅助表的起始值。默认0. |
pkColumnName | 否 | 指定存放主键名的列名 |
pkcolumnValue | 否 | 指定主键名 |
valueColumnName | 否 | 指定存放主键值的列名 |
indexs | 否 | 指定一个@Index数组,为辅助表创建索引 |
使用hibernate的@GenericGenerator注解定义主键生成器,该注解接受两个参数:
name:必须属性。设置该生成器的名称,该名称可以被@GeneratedValue的generator属性引用。
strategy:必须属性。设置该生成器的主键生成策略。接受以下值:
increment:为long,int,short生成唯一标识,只能在没有其他进程往同一个表中插入时才能使用。集群中不要使用!
identity:在DB2、MySql、SQL Server、Sybase和HypersonicSQL等有提供identity(自增长)的数据库中适用。
Sequence:在DB2、PostgreSQL、Oracle、SAP DB、McKoi等有提供Sequence支持的数据库中适用。
hilo:使用一个高/低位算法来生成long、int、short类型的标识符,该标识符在一个数据库中是唯一的。
seqhilo:使用一个高/低位算法来生成long、int、short类型的标识符,需要给定一个Sequence名,该属性适用与提供Sequence的数据库。
uuid:用一个128位的UUID算法来生成字符串类型的标识符,在全网中唯一。该算法根据IP地址、JVM启动时间、一个计数器值(JVM中唯一)来生成一个32位的字符串
guid:在SQL Server和Mysql中使用数据库生成的GUID 字符串
native:根据底层数据库的能力选择identity、sequenec或者hilo中的一个
assigned:让应用程序在sava之前为对象分配一个标识符。相当于不使用主键生成策略。
select:通过触发器选择某个唯一主键的行,并返回其主键值作为标识属性值
foreign:直接使用另一个关联的对象的标识符属性值(即本持久化对象不生成主键)。这种策略只在基于主键的1-1关联映射中有效。
下载说明
☉本站所有源码和资源均由站长亲自测试-绝对保证都可以架设,运营!
☉如源码和资源有损坏或所有链接均不能下载,请告知管理员,
☉本站软件和源码大部分为站长独资,资源购买和收集,放心下载!
☉唯一站长QQ:1004003180 [人格担保-本站注重诚信!]
☉购买建议E-mail:1004003180@qq.com 源码收购 E-mail:1004003180@qq.com
☉本站文件解压密码 【文章内都自带解压密码,每个密码不同!】