一、嵌入对象
在“复合主键”章节中,我们看到了怎样用嵌入对象和
@EmbeddedId
注解。
嵌入对象自己没有持久化
ID
,共享被嵌入实体类的
ID
。如果该实体类被删除,嵌入对象也被删除。
请看下例:
@Embeddable
public class Address {
private String street1;
private String street2;
private String city;
private String state;
private String zipcode;
private String country;
// Constructors, getters, setters
}
@Entity
public class Customer {
@Id
@GeneratedValue
private Long id;
private String firstName;
private String lastName;
private String email;
private String phoneNumber;
@Embedded
private Address address;
// Constructors, getters, setters
}
每一个
Address
的属性都会被映射到实体类
Customer
对应的表中。
产生的
DDL
:
CREATE TABLE `customer` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`city` varchar(255) DEFAULT NULL,
`country` varchar(255) DEFAULT NULL,
`state` varchar(255) DEFAULT NULL,
`street1` varchar(255) DEFAULT NULL,
`street2` varchar(255) DEFAULT NULL,
`zipcode` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`firstName` varchar(255) DEFAULT NULL,
`lastName` varchar(255) DEFAULT NULL,
`phoneNumber` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
)
二、嵌入对象类的访问类型
一个嵌入对象类的访问类型默认由被其嵌入的实体类访问类型决定。如果实体类显示使用属性访问类型,嵌入对象将隐式同样使用属性访问。如果想让嵌入对象有不同的访问类型,可以通过
@Access
注解指定。
看下例:
Customer
实体和
Address
实体有不同的访问类型。
@Entity
@Access(AccessType.FIELD)
public class Customer {
@Id
@GeneratedValue
private Long id;
@Column(name = "first_name", nullable = false, length = 50)
private String firstName;
@Column(name = "last_name", nullable = false, length = 50)
private String lastName;
private String email;
@Column(name = "phone_number", length = 15)
private String phoneNumber;
@Embedded
private Address address;
// Constructors, getters, setters
}
@Embeddable
@Access(AccessType.PROPERTY)
public class Address {
private String street1;
private String street2;
private String city;
private String state;
private String zipcode;
private String country;
// Constructors
@Column(nullable = false)
public String getStreet1() {
return street1;
}
public void setStreet1(String street1) {
this.street1 = street1;
}
public String getStreet2() {
return street2;
}
public void setStreet2(String street2) {
this.street2 = street2;
}
@Column(nullable = false, length = 50)
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
@Column(length = 3)
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
@Column(name = "zip_code", length = 10)
public String getZipcode() {
return zipcode;
}
public void setZipcode(String zipcode) {
this.zipcode = zipcode;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
}
显示的设置嵌入对象的访问类型是极力推荐的,这样会避免嵌入对象被嵌入到多个实体类中产生映射问题。
分享到:
相关推荐
3. 实体类与对象关系映射:讲解如何定义Java实体类,并使用注解或XML文件进行对象关系映射,包括基本类型映射、关联映射(一对一、一对多、多对一、多对多)和继承映射。 4. Session与Transaction:介绍Hibernate的...
- **数据访问集成(Data Access/Integration)**:Spring提供了JDBC抽象层,简化了数据库操作,同时支持ORM(对象关系映射)框架如Hibernate和MyBatis。 - **MVC框架(Model-View-Controller)**:Spring MVC是...
而Hibernate作为持久层框架,简化了数据库操作,提供了ORM(对象关系映射)功能。 SSH框架的整合使得开发者能够更有效地管理应用程序的各个层次,实现松耦合、高复用的设计。例如,通过Spring的DI,可以轻松地更换...
这部分内容主要包含Part07和Part09两个部分,旨在帮助开发者提升在数据库操作和对象关系映射方面的技能。 Part07可能涉及的主题包括: 1. **持久化策略**:讲解了Hibernate的各种持久化策略,如懒加载(Lazy ...
3. **映射文件详解**:详细讲解XML或注解方式的实体映射,包括属性映射、关系映射(一对一、一对多、多对多)、继承映射等。 4. **HQL(Hibernate Query Language)**: Hibernate自己的查询语言,类似于SQL,但更...
总结来说,“Linq-To-Sql-Part_2-Define-Data-Model-Class”这个主题将指导你如何使用LINQ to SQL创建数据模型类,理解对象关系映射原理,以及如何编写查询和管理数据库交互。了解这些知识点后,你可以更有效地在...
5. **多对多关系映射**:详述如何配置和处理多对多关联,包括中间表的管理,以及集合的懒加载和级联操作。 6. **一对一关系映射**:深入讨论一对一关系的配置,包括外键约束、主键共享以及一对一关系的级联操作。 ...
Hibernate是一个广泛使用的Java库,用于将对象关系映射(ORM)到关系数据库,简化数据库操作,让开发者可以使用面向对象的方式来处理数据库。 在Java世界中,ORM工具如Hibernate消除了手动编写SQL语句的需要,使得...
通过ORM(对象关系映射),它将Java对象映射到数据库表,使得开发者可以使用面向对象的方式来操作数据库。 - Spring:是Java企业级应用开发的核心框架,提供依赖注入、AOP(面向切面编程)、事务管理等功能,使得...
ADO.NET是.NET框架内用于数据库访问的组件,而Entity Framework则是一种ORM(对象关系映射)工具,可以简化数据库操作,使得开发者能够使用面向对象的方式处理数据。 6. Web服务与WCF: ASP.NET支持创建Web服务,...
Hibernate是一个流行的开源对象关系映射(ORM)框架,它允许Java开发者在处理数据库时使用面向对象的方式,极大地简化了数据库操作。在这个版本中,我们可能会发现一系列用于数据库交互的API、配置文件、示例代码和...
7. 数据类型的映射:这部分描述了XCP中定义的数据类型和ASAM标准数据类型之间的映射关系。为了确保不同系统和设备间数据的一致性和可交换性,数据类型的映射是必要的。 8. 文档的版权和声明:文档指出其内容版权...
Hibernate,作为一个流行的开源对象关系映射(ORM)框架,为Java开发者提供了一种简单而强大的方式来管理数据库操作。在Java应用中,Hibernate使得开发人员可以将业务逻辑与数据库操作解耦,从而更加专注于应用程序...
在Java世界中,ORM(对象关系映射)框架如Hibernate极大地简化了数据库操作。本篇文章主要探讨的是Hibernate中的一对多关联关系映射,这是在实际项目开发中非常常见的一种关系映射类型。通过理解并掌握一对多关联,...
Hibernate是Java领域中一款广泛应用的关系对象映射框架,它允许开发者使用面向对象的方式来操作数据库,大大简化了数据访问层的编码工作。这个压缩包“hibernate4.2.3-part01”很可能是Hibernate 4.2.3版本的一部分...
Hibernate作为Java领域中最流行的ORM(对象关系映射)工具,它允许开发者以面向对象的方式处理数据库操作,简化了数据库与Java应用程序之间的交互。一对一关系映射是数据库设计中常见的一种关联类型,表示一个实体与...
2.2.1 对象-关系映射的概念 2.2.2 ORM中间件的基本使用方法 2.2.3 常用的ORM中间件 2.3 实体域对象的其他持久化模式 2.3.1 主动域对象模式 2.3.2 JDO模式 2.3.3 CMP模式 2.4 Hibernate API简介 ...