如果对象的某个属性为一个对象,而且不想单独对该对象建立一个表,这时Hibernate是这样处理的:
public class Name {
private String firstName;
private String SecondName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getSecondName() {
return SecondName;
}
public void setSecondName(String secondName) {
SecondName = secondName;
}
}
public class Employee {
private Integer id;
private Name name;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Name getName() {
return name;
}
public void setName(Name name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
注意映射文件:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.itcast.hibernate.domain">
<class name="Employee" table="employee">
<id name="id" unsaved-value="-1">
<generator class="native" />
</id>
<property name="age" />
<component name="name">
<property name="firstName" column="first_name"/>
<property name="SecondName" column="second_name"/>
</component>
</class>
</hibernate-mapping>
测试代码:
import org.hibernate.Session;
import org.hibernate.Transaction;
import cn.itcast.hibernate.HibernateUtil;
import cn.itcast.hibernate.domain.Employee;
import cn.itcast.hibernate.domain.Name;
public class ComponentTest {
public static void main(String[] args) {
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
Name name = new Name();
name.setFirstName("firstname");
name.setSecondName("secondname");
Employee employee = new Employee();
employee.setAge(30);
employee.setName(name);
session.save(employee);
tx.commit();
session.close();
}
}
关键是映射文件中采用的标签component.
最终在数据库中生成的表的结构:
id int
age int
firstname varchar
secondname varchar
即所有字段都出现在同一个表中
分享到:
相关推荐
2. **通道创建**:为了使客户端能够与远程对象通信,需要建立一个通道。在VB.NET中,可以使用`System.Runtime.Remoting.Channels`命名空间下的类来创建通道,如`TcpChannel`或`HttpChannel`,它们分别基于TCP和HTTP...
SessionBean: Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。...
封装(Encapsulation)是面向对象程序设计的一个原则,它指的是将数据(属性)和行为(方法)捆绑在一起,形成一个独立的单元,并通过对外提供的接口与外界进行交互。封装的目的是隐藏对象的内部状态,只能通过指定...
### 基于组件的GIS开发:Visual Basic与Map Objects实现 #### 一、Map Objects 概览 ...对于那些希望利用现有GIS支撑软件的强大功能而又不想受限于其环境的开发者来说,MO无疑是一个非常理想的选择。
SQLDMO是SQL Server的一个组件,它允许开发者通过编程方式访问和管理SQL Server的各种对象,如服务器、数据库、表、视图等。它包含了一系列的对象和方法,可以用来创建、修改和删除数据库对象,执行查询,以及进行...
* 在程序运行期间,一个 Table 对象只能固定和一个关系表相连。× * 要想在数据集中增加计算字段,必须先将数据集的字段全部置为动态字段。× * 在设计阶段,如果在 Query 对象的 SQL 语句中设置了参数,则必须在 ...
在Delphi中,建立一个文本编辑区域,可采用Edit控件。Delphi应用程序必有一个项目文件和至少一个单元文件。Delphi应用程序设计基于Object Pascal语言。 在Delphi中,表达式A .67C .6960 + 19 div 2 的值是79。最...
对于复杂型数据绑定,可以将多个数据元素绑定到一个控件,例如GridView。GridView控件允许你展示表格形式的数据,并且可以直接进行编辑、排序和分页。以下是一个简单的GridView绑定示例: ```csharp GridView1....
面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多...
7. 现建立一个简单报表,仅包含数据列标题栏、数据栏和汇总栏,则在Bands属性的子属2性中,不需要选择的是()。 知识点:Quick Report是一种常用的报表组件, Delphi程序设计中可以使用Quick Report来生成报表。 ...
每个模型类对应数据库中的一个表,类的属性则映射为表的列。 2. **同步性**: Realm的核心优势之一就是其实时同步能力。通过 Realm Sync,开发者可以在多个设备之间无缝同步数据,确保所有更改即时反映到所有连接的...
来自Software Artisans,SA-FileUP组件是一个真正的ActiveX DLL服务器组件,容易集成到ASP网页中。该组件也可在MTS/COM+的环境中上运行。 使用SA-FileUP组件的教程可在http://www.activeserverpages.com/upload/ 上...
解释器模式是一种行为型设计模式,它定义一个新的语言的文法,并且建立一个解释器来解释该语言中的句子。这里的“语言”是指使用规定格式和语法的代码。 **应用场景:** 当一个语言需要解释执行,且这个语言的文法...
1. 外部关键字(D):在数据库中,如果一个表的字段是另一个表的主键或候选键,那么这个字段被称为外部关键字,它用于建立两个表之间的关联。 2. 链表操作(D):在链表中删除一个节点,应该将前一个节点的next指针...
5. **Memento模式**:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 - **应用场景**:需要保存/恢复数据的相关状态而又不希望暴露...
- **选项B**:正确,Integration Services (SSIS) 是 SQL Server 的一个组件,专门用于数据集成和批量数据加载任务,可以帮助 Steve 将来自不同源的数据转换为统一的格式,并加载到数据库中。 - **选项C**:不正确,...
StrangeIoC是一个专门为Unity游戏引擎设计的依赖注入框架,它基于IoC(Inversion of Control)原则,使得游戏代码更加模块化,易于测试和维护。在这个"基于StrangeIoC的点击方块加分的Demo"中,我们将探讨如何利用...
primaryKeyTable 如果成员表不只一个,而是多个表通过 join 关系形成的,那么就要通过这个属性来指明 join 的这些表中,哪一个与 Dimension 里设置的 foreignKey 属性形成外键关系。通过该属性来指明主表 caption ...
安装好后,建立一个.NET 3.5的Web项目,像使用普通控件一样拖放到要使用的Web界面即可。初步研究了一下,整个图形控件主要由以下几个部份组成: 1. Annotations -- 图形注解集合 2. ChartAreas -- 图表区域集合 3. ...
- 必须保存/恢复数据,但又不想暴露对象的内部状态。 - 如果用公有属性来保存数据,会使程序的其他部分过于紧密地与它耦合。 - **参与者**: - `Originator`:创建一个备忘录,用以记录当前的内部状态。 - `...