标识符
increment 用于代理主键.由Hibernate自增方式生成标识符,每次增量为1
identity 同上。由底层数据库生成标识符.前提是要数据库支持自增
sequence 同上。由底层数据库生成标识符.前提是要数据库支持序列
hilo 同上。由Hibernate根据high/low算法生成标识符
native 同上。根据数据库的支持,选择identity,sequence或hilo
uuid.hex 同上。由Hibernate采用UUID算法生成字符串形式的标识符
assigned 用于自然主键。由Java代码通过setId()生成标识符。
数据库可使用的标识符
几种常用数据库可以使用的标识符生成器:
1. MySQL:identity,increment,hilo,native
2. MS SQL Server:identity,increment,hilo,native
3. Oracle:sequence,seqhilo,hilo,increment,native
4. 跨平台:native
IdentityTester.hbm.xml
<hibernate-mapping>
<class name="mypack.IdentityTester" table="IDENTITY_TESTER">
<id name="id" type="long" column="ID">
<generator class="identity"/>
</id>
<property name="name" type="string" column="NAME"/>
</class>
</hibernate-mapping>
IncrementTester.hbm.xml
<hibernate-mapping>
<class name="mypack.IncrementTester" table="INCREMENT_TESTER">
<id name="id" type="long" column="ID">
<meta attribute="scope-set">private</meta>
<generator class="increment"/>
</id>
<property name="name" type="string" column="NAME"/>
</class>
</hibernate-mapping>
NativeTester.hbm.xml
<hibernate-mapping>
<class name="mypack.NativeTester" table="NATIVE_TESTER">
<id name="id" type="long" column="ID">
<generator class="native"/>
</id>
<property name="name" type="string" column="NAME"/>
</class>
</hibernate-mapping>
HiloTester.hbm.xml 【101 201 301】
<hibernate-mapping>
<class name="mypack.HiloTester" table="HILO_TESTER">
<id name="id" type="long" column="ID">
<generator class="hilo">
<param name="table">hi_value</param>
<param name="column">next_value</param>
<param name="max_lo">100</param>
</generator>
</id>
<property name="name" type="string" column="NAME" />
</class>
</hibernate-mapping>
Squence.hbm.xml
<generator class="sequence”>
<param name="squence”>test_id_seq</param>
</generator>
基础级联 Monkey属于Team
Team.hbm.xml 【inverse="true" cascade="all-delete-orphan"】
<hibernate-mapping>
<class name="mypack.Team" table="TEAMS">
<id name="id" type="long" column="ID">
<generator class="increment"/>
</id>
<property name="name" type="string" column="NAME"/>
<set name="monkeys"
cascade="all-delete-orphan"
inverse="true">
<key column="TEAM_ID"/>
<one-to-many class="mypack.Monkey"/>
</set>
</class>
</hibernate-mapping>
Monkey.hbm.xml 【none delete all delete-orphan all-delete-orphan】
<hibernate-mapping>
<class name="mypack.Monkey" table="MONKEYS">
<id name="id" type="long" column="ID">
<generator class="increment"/>
</id>
<property name="name" type="string" column="NAME"/>
<!--mapping with cascade -->
<many-to-one
name="team"
column="TEAM_ID"
class="mypack.Team"
cascade="save-update" <!— none delete all delete-orphan all-delete-orphan -->
lazy="false" <!-- proxy -->
/>
</class>
</hibernate-mapping>
操作Service类代码片段
tx = session.beginTransaction();
Team team = new Team("BULL", new HashSet<Monkey>());
Monkey monkey = new Monkey();
monkey.setName("Tom");
monkey.setTeam(team);
team.getMonkeys().add(monkey);
session.save(team);
tx.commit();
tx =session.beginTransaction();
Team team =(Team) session.load(Team.class, teamId);
Monkey monkey =(Monkey) team.getMonkeys().iterator().next();
// 解除team和Monkey的关联关系
team.getMonkeys().remove(monkey);
monkey.setTeam(null);
tx.commit();
分享到:
相关推荐
#### 二、级联配置步骤详解 1. **创建 VSAN (Virtual SAN)** - **定义**: VSAN 是一种逻辑隔离机制,可以在物理网络上实现多个独立的存储区域网络(SAN)。 - **操作**: 使用 `vsan database` 命令进入VSAN...
《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...
当调用`session.delete(student)`或`session.delete(course)`时,如果配置了级联删除,Hibernate会检查关联表,找出所有与被删除实体关联的记录,并一并删除。请注意,级联删除可能引起数据丢失,因此在使用时需谨慎...
这些类通常会包含一些基本属性如ID、名称等,并通过Hibernate的注解与数据库表建立关联。 接下来是`UserAction.java`,这通常是Struts2框架中的一个Action类,负责接收用户的请求并调用相应的业务逻辑。在这个案例...
【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...
在这个配置中,我们将学习如何配置两个路由器以实现LAN级联。 首先,让我们了解一下路由器的基本概念。路由器是一种网络设备,用来连接多个网络设备,并将数据包路由到正确的目的地。路由器通常具有多个网络接口,...
这篇文档和学习笔记将深入介绍Hibernate的核心概念、API用法以及最佳实践。 1. **Hibernate核心概念** - **对象关系映射(ORM)**: Hibernate是ORM的一种实现,它允许开发者使用面向对象的方式来操作数据库,而...
在Hibernate的配置文件中,我们可以通过以下方式设置级联操作: ```xml ,delete-orphan" /> ``` 在这个例子中,父实体的`childEntity`属性将执行全部级联操作,包括添加、删除和更新,同时`delete-orphan`意味着如果...
**Hibernate学习笔记与总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库上操作对象数据的便捷方式。本文将深入探讨Hibernate的核心概念、配置、实体类、映射文件、...
Cisco与Brocade光纤交换机级联配置文档概述 本文档介绍了Cisco与Brocade光纤交换机级联配置的详细过程,涵盖了配置异构交换机平台协同工作模式、domain ID、VSAN、FC端口配置、SNMP服务器配置等方面的知识点。 ...
在本篇“Hibernate学习笔记(三)”中,我们将深入探讨Hibernate这一强大的Java对象关系映射(ORM)框架。Hibernate简化了数据库操作,使得开发者能够更专注于业务逻辑,而不是底层的SQL查询。这篇笔记主要围绕...
Struts、Hibernate以及SQLServer2000是Java Web开发中的三个重要技术,它们共同构建了一个功能丰富的级联下拉框程序。这个程序的核心目的是在用户界面中提供一种交互方式,使得用户可以从一个下拉框的选择中动态地...
2. **HelloWorld**:这是学习任何新框架时的传统起点,通过一个简单的示例程序展示如何在项目中引入Hibernate,配置并运行第一个查询,帮助理解其基本用法。 3. **Hibernate原理模拟**:这部分深入讲解了Hibernate...
描述:本篇笔记深入探讨了Hibernate框架中一对多关系的映射及持久化对象状态管理,结合个人理解与实践经验,旨在为读者提供一份详实的学习资料。 ### 一、一对多关系映射详解 在Hibernate框架中,一对多关系是一种...
总之,《hibernate学习笔记(全)》涵盖了Hibernate的各个方面,从基础配置到高级应用,是学习和掌握Hibernate的宝贵资料。通过深入学习,读者不仅可以提升数据库操作的效率,还能更好地理解和运用ORM思想,提升Java...
3. **配置Hibernate**:编写Hibernate的配置文件(hibernate.cfg.xml),设置数据库连接信息,以及实体类的映射文件。 4. **创建DAO层**:编写ProvinceDAO和CityDAO接口,实现省份和城市的CRUD操作,使用Hibernate...
《Hibernate学习笔记》 在Java世界中,Hibernate是一款强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式处理数据。这篇笔记详细地阐述了Hibernate的核心概念、配置、实体映射...