学习hibernate @Entity该导入哪个包

时间:2024-01-02 12:37:32

1.在@Entity时很容易顺手导入@org.hibernate.annotations.Entity这个包,结果导致了异常。其实应该导入的是@javax.persistence.Entity

Always import @javax.persistence.Entity 
@org.hibernate.annotations.Entity是@javax.persistence.Entity的一个补充,但不是后者的替代品

如果import @org.hibernate.annotations.Entity的话,会报异常。

如果想使用@org.hibernate.annotations.Entity所包含的特殊的功能的话,需要在import @javax.persistence.Entity的基础上增加注释,如下: 
@Entity 
@org.hibernate.annotations.Entity(optimisticLock=OptimisticLockType.ALL) 
public class MyEntity implements Serializable { 
... 
}

在加注释的时候:

1.spring 是set

2.hibernate是get

2. Hibernate常用Annotation标签说明

@ javax.persistence.Entity

实体类定义,该标签表示当前类是一个Hibernate的数据库实体,对应着数据库中的某个表

位置:用于类级别

参数:无

样例:@Entity

注意:导入标签类时可能会有多个,这里使用的是javax.persistence.Entity

@javax.persistence.Table

实体类定义,该标签表示当前类是一个Hibernate的数据库实体,对应着数据库中的某个表

位置:用于类级别

参数:name – 用于指定表名,如果不指定则表名与类名相同,考虑到不同数据库的解析方式可能不一样,建议手工指定表名。表名统一用大写字母,单词之间用下划线分隔。

样例:@Table(name=”DAT_USER_INFO”)

注意:导入标签类时可能会有多个,这里使用的是javax.persistence.Table

@ javax.persistence.Id

该标签用于标识数据实体的主键

位置:用于主键属性的Get方法,QFrame约定为getId()方法

参数:无

样例:@Id

@ javax.persistence.GeneratedValue

定义主键生成方式,通常和@ org.hibernate.annotations.GenericGenerator一同使用,用于生成主键。

位置:用于主键属性的Get方法,QFrame约定为getId()方法。

参数:strategy -构造方式;generator -构造器名称。

样例:

1、 由Hibernate自动生成主键:@GeneratedValue(strategy=GenerationType.AUTO)

2、 根据主指构造器生成主键:@GeneratedValue(generator="assigned")

@ org.hibernate.annotations.GenericGenerator

Hibernate提供的主键构造器。通常与@GeneratedValue配合使用。

位置:用于主键属性的Get 方法。

参数:name -构造器名称,在@GeneratedValue 中引用;strategy -构造方式。

样例:

1.      手工指定的主键:
@GeneratedValue(generator="assigned") 
@GenericGenerator(name = "assigned", strategy = "assigned")

2.      从Sequence 获取主键:
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="TASK_SEQ")
@SequenceGenerator(name="TASK_SEQ",sequenceName="SEQ_GROUP_SEND_TASK")

@ javax.persistence.Column

用于表示实体属性对应数据库表的哪个字段。

位置:用于属性的Get 方法

参数:

name – 字段名,默认为属性名,建议手工指定,字段名统一使用大写字母

nullable -boolean 值,表示该属性是否可以为空,默认为true。

insertable -boolean 值,表示该属性是否在insert语句中包含,默认为true。

updatable -boolean 值,表示该属性是否在update 语句中包含,默认为true。

length -int值,表示该属性值的长度,通常用于字符串属性,默认为255。

unique -boolean 值,表示该属性值是否建立唯一索引,默认为false。

@ javax.persistence.Transient

用于标识不在数据库表中映射的属性。

位置:用于属性的Get 方法

参数:无

@ org.hibernate.annotations.Type

自定义类型,将属性用于自定义类型。通常用于定义枚举类型。

位置:用于属性的Get 方法

参数:type -类型完成名称(包含包名)

样例:@Type(type="net.osjava.xsmfms.entity.SendTypeDataType")