`
- 浏览:
49075 次
- 性别:
- 来自:
上海
-
Annotation对Hibernate中联合主键定义
public class User {
private int id;
private String name;
private String address;
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getAddress() {
return address;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setAddress(String address) {
this.address = address;
}
}
在如上类中假设需要定义一个联合主键 id,name,在hibernate中利用注解映射方法有如下三种:
1、将组件类注解为@Embeddable,并将实体类中组件的注解为@Id
首先需要抽象出一个组件类,并将其注解为可嵌入式的Embeddedable在User中进行引用
@Embeddable
public class UserPk implements Serializable {
private static final long serialVersionUID = 1L;
private int id;
private String name;
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}
其次要在实体类中将组件属性注解为@ID
@Entity
public class User {
private UserPk userPk;
private String address;
@Id
public UserPk getUserPk() {
return userPk;
}
public String getAddress() {
return address;
}
public void setUserPk(UserPk userPk) {
this.userPk = userPk;
}
public void setAddress(String address) {
this.address = address;
}
}
2、将组件的属性注解为@EmbeddedId
首先需要抽象出一个组件类,在User中进行引用
public class UserPk implements Serializable {
private static final long serialVersionUID = 1L;
private int id;
private String name;
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}
其次需要在实体类中对组件属性注解为嵌入式的ID,即:@EmbeddedId
@Entity
public class User {
private UserPk userPk;
private String address;
@EmbeddedId
public UserPk getUserPk() {
return userPk;
}
public String getAddress() {
return address;
}
public void setUserPk(UserPk userPk) {
this.userPk = userPk;
}
public void setAddress(String address) {
this.address = address;
}
}
3、将类注解为@IdClass,并将该实体中所有属于主键属性都注解为@Id
抽象出组件类
public class UserPk implements Serializable {
private static final long serialVersionUID = 1L;
private int id;
private String name;
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}
实体类
@Entity
@IdClass(value = UserPk.class)
public class User {
private int id;
private String name;
private String address;
@Id
public int getId() {
return id;
}
@Id
public String getName() {
return name;
}
public String getAddress() {
return address;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setAddress(String address) {
this.address = address;
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
通过这种方式,你可以实现Hibernate中一对一单向外键关联及联合主键的配置。这使得两个实体间的关系更加明确,同时也方便了数据的管理和操作。在实际项目中,这样的设计可以提高数据的完整性和一致性。
Annotation 在 Hibernate 中扮演着关键角色,它们为数据库对象提供了元数据,使得无需XML配置就能实现数据持久化。本笔记将深入探讨Hibernate Annotation的相关知识点。 1. **实体类与@Entity** - `@Entity` 注解...
2. **主键定义**:每个实体通常都有一个主键,我们可以使用`@Id`注解来标记主键字段。默认情况下,Hibernate会使用`GenerationType.AUTO`策略生成主键,但也可以自定义生成策略,如`GenerationType.IDENTITY`或`...
在Hibernate中,Annotation是用于替代传统XML配置的一种方式,提供了更加直观、简洁的代码表示。本文将深入探讨Hibernate Annotation,帮助读者理解和掌握这一强大的工具。 一、Hibernate Annotation基础 1.1 ...
而Hibernate的注解版本,特别是3.2.1版本,更是其发展历程中的一个重要里程碑,它使得开发者能够通过在Java类和属性上添加注解,实现对数据库的映射,从而减少了XML配置文件的依赖。这篇文档将详细介绍Hibernate注解...
第1课 课程内容 6 第2课 Hibernate UML图 6 第3课 风格 7 第4课 资源 7 第5课 环境准备 7 ...三、 联合主键 24 1、xml方式 24 2、annotation方式 27 第14课 Hibernate核心开发接口(重点) 29 ........
在实体类中,我们需要定义主键字段,通常使用`@Id`注解。例如: ```java @Entity public class User { @Id private Long id; // ... } ``` `@GeneratedValue` 可以与`@Id`结合使用,自动管理主键的生成策略,如...
包括Hibernate核心库、JTA事务管理、JPA规范实现等,使用这些jar包,开发者可以轻松实现Java项目中的ORM功能,利用Hibernate的强大功能进行数据库操作,同时支持Annotation配置,简化了开发过程。
5.5.2. 使用 JDK 5.0 的注解(Annotation) 5.6. 数据库生成属性(Generated Properties) 5.7. 辅助数据库对象(Auxiliary Database Objects) 6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) ...
10. **一对多(One-to-Many)、多对一(Many-to-One)、多对多(Many-to-Many)关系映射**:这些映射关系在实际业务中很常见,Hibernate提供了灵活的配置方式来处理这些关联。 11. **继承映射**:Hibernate支持单表...
5. **@JoinTable**:在多对多关系中,用于定义中间表的详细信息,包括联合主键等。 ### 集合映射的加载策略 Hibernate提供了多种加载策略,例如: - **EAGER**:集合会在主对象加载时一起加载,适合小规模数据。 ...
- `@Inheritance`:定义继承策略,如SINGLE_TABLE(单表继承)、JOINED(联合继承)和TABLE_PER_CLASS(每类一张表)。 - `@JoinColumn`:用于指定外键列的名称和属性。 - `@Transient`:标记一个属性不映射到数据库...
第13课专注于ID主键的生成策略,包括Xml方式和AnnotateOn方式,如AUTO、IDENTITY、SEQUENCE、TABLE等策略,并讨论了联合主键的配置。 第14课是核心内容,介绍了Hibernate的主要开发接口,如`Configuration...
1. Hibernate Annotation 概述 Hibernate Annotations是Hibernate框架中的一种元数据表示方式,它允许开发者在Java实体类上直接添加注解,替代传统的XML配置文件来描述对象关系映射(ORM)。这种方式使得ORM配置更加...
- **字段映射**: @Id、@GeneratedValue、@Column等注解的使用,定义主键生成策略和字段属性。 - **关联映射**: @OneToOne、@OneToMany、@ManyToOne、@ManyToMany等,处理对象之间的关系。 **4. Session操作** - **...
最后,书中可能还会讨论一些高级主题,如Hibernate的联合映射(Association Mapping)、继承映射(Inheritance Mapping)、复合主键(Composite Key)以及自定义类型(Custom Types)。这些特性允许开发者构建更复杂...
例如,`@Entity`表示一个Java类对应数据库中的一个表,`@Id`标识主键,`@GeneratedValue`定义主键生成策略等。 3. **SessionFactory与Session**:在Hibernate中,SessionFactory是线程安全的,负责创建Session对象...
- **联合主键**:当一个实体的主键由多个字段组成时,可以通过XML或Annotation方式指定联合主键。 #### Hibernate核心开发接口 - **Configuration/AnnotationConfiguration**:负责读取配置文件,初始化...
1. 在Tomcat中快速上手 1.1. 开始Hibernate之旅 1.2. 第一个持久化类 1.3. 映射cat 1.4. 与Cat同乐 1.5. 结语 2. 架构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 3. 配置 ...