`
txidol
  • 浏览: 54543 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Hibernate学习笔记(二)【标识符及基本级联配置】

阅读更多

标识符

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();

 


 

分享到:
评论

相关推荐

    Cisco_MDS9000系列级联配置

    #### 二、级联配置步骤详解 1. **创建 VSAN (Virtual SAN)** - **定义**: VSAN 是一种逻辑隔离机制,可以在物理网络上实现多个独立的存储区域网络(SAN)。 - **操作**: 使用 `vsan database` 命令进入VSAN...

    Hibernate学习笔记特别详细

    《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...

    hibernate many-to-many级联保存,级联更新,级联删除

    当调用`session.delete(student)`或`session.delete(course)`时,如果配置了级联删除,Hibernate会检查关联表,找出所有与被删除实体关联的记录,并一并删除。请注意,级联删除可能引起数据丢失,因此在使用时需谨慎...

    用hibernate做的省市县三级级联,

    这些类通常会包含一些基本属性如ID、名称等,并通过Hibernate的注解与数据库表建立关联。 接下来是`UserAction.java`,这通常是Struts2框架中的一个Action类,负责接收用户的请求并调用相应的业务逻辑。在这个案例...

    Java相关课程系列笔记之十四Hibernate学习笔记

    【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...

    路由器LAN级联配置.docx

    在这个配置中,我们将学习如何配置两个路由器以实现LAN级联。 首先,让我们了解一下路由器的基本概念。路由器是一种网络设备,用来连接多个网络设备,并将数据包路由到正确的目的地。路由器通常具有多个网络接口,...

    hibernate API帮助文档 及hibernate学习笔记

    这篇文档和学习笔记将深入介绍Hibernate的核心概念、API用法以及最佳实践。 1. **Hibernate核心概念** - **对象关系映射(ORM)**: Hibernate是ORM的一种实现,它允许开发者使用面向对象的方式来操作数据库,而...

    Hibernate的级联操作(增,删,该)

    在Hibernate的配置文件中,我们可以通过以下方式设置级联操作: ```xml ,delete-orphan" /&gt; ``` 在这个例子中,父实体的`childEntity`属性将执行全部级联操作,包括添加、删除和更新,同时`delete-orphan`意味着如果...

    Hibernate学习笔记与总结

    **Hibernate学习笔记与总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库上操作对象数据的便捷方式。本文将深入探讨Hibernate的核心概念、配置、实体类、映射文件、...

    Cisco与Brocade光纤交换机级联配置文档.pdf

    Cisco与Brocade光纤交换机级联配置文档概述 本文档介绍了Cisco与Brocade光纤交换机级联配置的详细过程,涵盖了配置异构交换机平台协同工作模式、domain ID、VSAN、FC端口配置、SNMP服务器配置等方面的知识点。 ...

    Hibernate学习笔记(三)

    在本篇“Hibernate学习笔记(三)”中,我们将深入探讨Hibernate这一强大的Java对象关系映射(ORM)框架。Hibernate简化了数据库操作,使得开发者能够更专注于业务逻辑,而不是底层的SQL查询。这篇笔记主要围绕...

    用Struts+hibernate+SQLServer2000写的级联下拉框程序

    Struts、Hibernate以及SQLServer2000是Java Web开发中的三个重要技术,它们共同构建了一个功能丰富的级联下拉框程序。这个程序的核心目的是在用户界面中提供一种交互方式,使得用户可以从一个下拉框的选择中动态地...

    马士兵hibernate学习笔记.docx

    2. **HelloWorld**:这是学习任何新框架时的传统起点,通过一个简单的示例程序展示如何在项目中引入Hibernate,配置并运行第一个查询,帮助理解其基本用法。 3. **Hibernate原理模拟**:这部分深入讲解了Hibernate...

    hibernate 学习笔记3

    描述:本篇笔记深入探讨了Hibernate框架中一对多关系的映射及持久化对象状态管理,结合个人理解与实践经验,旨在为读者提供一份详实的学习资料。 ### 一、一对多关系映射详解 在Hibernate框架中,一对多关系是一种...

    hibernate学习笔记(全)

    总之,《hibernate学习笔记(全)》涵盖了Hibernate的各个方面,从基础配置到高级应用,是学习和掌握Hibernate的宝贵资料。通过深入学习,读者不仅可以提升数据库操作的效率,还能更好地理解和运用ORM思想,提升Java...

    Struts_Hibernate_Dwr框架整合省份菜单级联

    3. **配置Hibernate**:编写Hibernate的配置文件(hibernate.cfg.xml),设置数据库连接信息,以及实体类的映射文件。 4. **创建DAO层**:编写ProvinceDAO和CityDAO接口,实现省份和城市的CRUD操作,使用Hibernate...

    hibernate学习笔记

    《Hibernate学习笔记》 在Java世界中,Hibernate是一款强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式处理数据。这篇笔记详细地阐述了Hibernate的核心概念、配置、实体映射...

Global site tag (gtag.js) - Google Analytics