hibernate学习:映射之主键
2015-03-05 00:01
369 查看
给实体类添加标示符属性
JPA/hibernate注解方式配置标示符属性
当@Id注解在字段上时,hibernate访问此类的所有属性皆通过字段访问。
当@Id注解在get方法上时,hibernate访问此类则通过get方法。
hibernate的 @AccessType注解可以选择访问方式,可以注解在类上,访问方法上,字段上。提供了比@Id这种隐式的方式更为细粒度的控制
主键的选择:
1,永远不会为空
2,每一行都有唯一的值
3,一个特定行的值永远不变
常用主键生成策略
在xml中声明一个具名MY_SEQUENCE的数据库序列 全局序列生成器
@TableGenerator 表生成id方式
public class Category{ private Long id; public Long getId(){ return this.id; } private void setId(Long id){ //hibernate生成时自动设置,保证id的唯一性,不可变性 this.id = id; } }hibernate xml配置标示符属性
<pre name="code" class="html"><span style="font-family: Arial, Helvetica, sans-serif;"><class name="category" table="CATEGORY"></span>
<id name="id" column="CATEGORY_ID" type="long"> <span> </span><generator class="native"/> </id>
...
</pre><pre name="code" class="html"></class>
JPA/hibernate注解方式配置标示符属性
@Entity @table(name="CATEGORY") public class Category private Long id; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name="CATEGORY_ID") //不指定时,使用属性名称作为数据库列名 public Long getId(){ return this.id; } private void setId(Long id){ this.id = id; } }
当@Id注解在字段上时,hibernate访问此类的所有属性皆通过字段访问。
当@Id注解在get方法上时,hibernate访问此类则通过get方法。
hibernate的 @AccessType注解可以选择访问方式,可以注解在类上,访问方法上,字段上。提供了比@Id这种隐式的方式更为细粒度的控制
主键的选择:
1,永远不会为空
2,每一行都有唯一的值
3,一个特定行的值永远不变
常用主键生成策略
Hibernate类型 | JPA类型 | 选项 | 描述 |
native | AUTO | -- | 此生成器将根据底层数据库的不同自动挑选不同的其他生成器 |
identity | IDENTITY | -- | 支持DB2,MySQL, SQL SERVER,返回类型为long short 或 int |
sequence | SEQUENCE | sequence,parameter | 支持DB2,ORACLE 返回类型为long short 或 int |
increment | 不可用 | -- | 由hibernate自动生成,每次增加1 |
@Entity @org.hibernate.annotations.GenericGenerator( name = "hiberate-uuid", strategy = "uuid" ) class MyEntity{ @Id @Column(name="MY_ID") @GeneratedValue(generator = "hibernate-uuid") String id; }
在xml中声明一个具名MY_SEQUENCE的数据库序列 全局序列生成器
<sequence-generator name="mySequenceGenerator" sequence-name="MY_SEQUENCE" initial-value="123" allocation-size="20"/>在注解中使用它
@Entity class MyEntity{ @Id @GeneratedValue(generator="mySequenceGenerator") String id; }如果在实体类中生命一个同名的生成器,且在class关键字之前,则它会覆盖全局生成器
@TableGenerator 表生成id方式
相关文章推荐
- 【SSH之旅】一步步学习Hibernate框架(二):一对一关联映射中的主键关联
- [原创]java WEB学习笔记85:Hibernate学习之路-- -映射 一对一关系 ,基于主键方式实现
- Hibernate学习——(七)联合主键映射以及组件映射
- Hibernate学习笔记----基于外键或主键映射的1-1关联关系
- hibernate学习(二)主配置文件/映射配置/主键映射
- Hibernate学习21 -- 关联映射11 -- 复合主键映射(composite-id)
- [原创]java WEB学习笔记81:Hibernate学习之路--- 对象关系映射文件(.hbm.xml):hibernate-mapping 节点,class节点,id节点(主键生成策略),property节点,在hibernate 中 java类型 与sql类型之间的对应关系,Java 时间和日期类型的映射,Java 大对象类型 的 映射 (了解),映射组成关系
- Hibernate 学习笔记-1-3(Hibernate的基本映射以及几种主键生成策略的测试)
- hibernate学习11之composite(复合)主键映射
- Hibernate中联合主键映射学习
- Hibernate学习_010_联合主键映射(Annotation方式)
- Hibernate学习12 -- 关联映射2 -- 一对一关联1 -- 一对一主键关联
- 【HIbernate框架学习】:Hibernate复合主键映射
- Hiberante学习之复合主键的映射
- Hibernate视频学习笔记(6)一对多关联映射
- hibernate 映射无主键和复合主键的数据库表
- Hibernate视频学习笔记(9)Hibernate继承映射
- Hibernate视频学习笔记(7)多对多关联映射
- Oracle与Hibernate主键映射策略
- Hibernate学习笔记:集合映射之映射Map