`
zyfautonavi
  • 浏览: 14822 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

hibernate第二天

阅读更多

                          hibernate day02 总结
一、id生成方式
1,序列sequence 只适用于Oracle
<id name="id" column="id">
<generator class="sequence">
  <param name="sequence">person_seq</param><!--指定sequence名-->
</generator>
</id>

2,自增列,适用于SQLServer、MySql
<id name="id" column="id">
<generator class="identity"/>
</id>

3,取最大值加一
<id name="id" column="id" type="integer">
<generator class="increment"/>
</id>

4,根据底层数据库指定生成方法
<id name="id" column="id">
  <generator class="native"/>
</id>
使用缺省策略
针对Oracle数据库的生成方式还是sequence,只不过需要一个特定名字的sequence,"hibernate_sequence"。

5,高低位算法
<id name="id" column="id">
  <generator class="hilo">
   <param name="table">high_value</param>
   <!--设置高位值取值的表-->
   <param name="column">next_value</param>
   <!--设置高位值取值的字段-->
   <param name="max_lo">50</param>
   <!--指定低位最大值,当取道最大值是会再取一个高位值再运算-->
  </generator>
</id>
6.联合主键
<composite-id>
    <key-property name="username"/>
    <key-property name="password"/>
</composite-id>
7. 使用uuid.hex作为主键,uuid包括:ip地址,jvm的启动时间,系统时间,和一个计数器值。
<id name="id" type="long" column="id">
   <generator class = "uuid.hex"/>
</id>
8. 使用另外一个相关联的对象的标识符。通常和<one-to-one>
<id name="id" type="long" columnid="id">
<generator class = "foreign"/>
</id>
结论:一般而言利用uuid.hex方式生成主键将提供最好的性能和数据库平台适应性。
以上是hilo算法的普通形式,不适合用于squenece
在一个会话中保存多个对象

二、Hibernate中对类关系的处理:
one―to―one关系在数据库中如何体现,在JavaBean中如何体现,在
Hibernate中如何映射one-to-one关系。           
1、 数据库中:一个表的外健对应另一个表的主健,外健要加上Unique约束(外健关联)。或者是两个表共享一个主健,表现为子表中的pk同时引用了父表的pk作外健而存在(主
健关联,子表中的pk和fk为一个字段)。
2、 javaBean中:在JavaBean中增加一个属性,即另外一个对象的引用,可以单向也可以双向。
3、 在hibernate中:
A、主健映射:都是one-to-one要用foreign生成策略。
   以汽车car和发动机Engine(一对一关系)为例:
  a、主表Car.hbm.xml的写法
<class name="Car" table="car_pk">
    <id name="id" column="id" type="integer">
      <generator class="native" />
    </id>
    <property name="name" column="name" type="string" />
    <one-to-one name="engine" class="Engine" cascade="all"/>
  </class>
注:cascade="all" 表示增删改查Car对象时都会级联增加、删除和修改Engine对象。
  级联一定是在主对象的映射文件中
  b、附表Engine.hbm.xml的写法
<class name="Engine" table="engine_pk">
    <id name="id" column="id" type="integer">
      <generator class="foreign">
        <param name="property">car</param>
      </generator>
    </id>
    <property name="model" column="model" type="string" />
    <one-to-one name="car" class="Car" constrained="true"/>
  </class>
注:constrained="true"表示Engine应用了Car的主健作为外健。
foregin表明id的生成方式是引用表car的主键
B、外健映射:主表中用one-to-one,通过property -ref many-to-one
  a、主表Car.hbm.xml的写法
<class name="Car" table="car_fk">
    <id name="id" column="id" type="integer">
      <generator class="native" />
    </id>
    <property name="name" column="name" type="string" />
<one-to-one name="engine" class="Engine"
property-ref="car" cascade="save-update"/>
  </class>
注:name="engine" property-ref="car"表示engine表引用了car表的主健作为他的外健。
cascade="save-update"表示增改Car对象时都会级联增加和修改Engine对象。
  b、附表Engine.hbm.xml的写法
<class name="Engine" table="engine_fk">
    <id name="id" column="id" type="integer">
      <generator class="native" />
    </id>
    <property name="model" column="model" type="string" />
<many-to-one name="car" class="Car"
unique="ture"  column="carid"/>
  </class>
注:unique="ture" column="carid"表示为engine表中的外健carid加上唯一约束,使之一对多关系强制转化为一对一关系。

分享到:
评论

相关推荐

    学习hibernate第二天

    本篇将基于“学习Hibernate第二天”的主题,结合“源码”和“工具”这两个标签,深入探讨Hibernate的一对一主键关联双向映射,以及如何在实际开发中利用这一特性。 在Java对象关系映射(ORM)框架中,数据模型通常...

    hibernate学习笔记第二天的源码

    在深入探讨Hibernate学习笔记第二天的源码之前,我们先来理解一下Hibernate的核心概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转化为对象模型,大大简化了数据访问层的开发...

    hibernate培训第二天

    【hibernate培训第二天】——深入理解Hibernate框架 在软件开发中,ORM(Object-Relational Mapping)框架已经成为连接数据库与应用程序的重要桥梁,而Hibernate作为Java领域中的主流ORM框架,其强大而灵活的功能...

    hibernate第一天笔记

    总的来说,Hibernate第一天的学习涵盖了基本的环境配置、对象关系映射、主键生成策略、`SessionFactory`和`Session`的使用,以及事务管理和缓存机制。理解并掌握这些基础概念,是进一步深入学习Hibernate和进行实际...

    hibernate达内五天复习笔记.pdf

    - 第二天可能涉及了更具体的映射配置和实例,如XML配置文件或注解方式的映射。 - 第三天可能深入到对象状态的转换和生命周期管理,以及如何处理事务。 - 第四天可能讲解了HQL的使用,包括查询、更新、删除等操作...

    hibernate培训第三天

    **hibernate培训第三天** 在hibernate培训的第三天,我们深入探讨了这个强大的对象关系映射(ORM)框架的关键概念和技术。这天的学习主要涵盖了实体管理、持久化操作、事务处理以及查询语言等方面,旨在提升学员对...

    hibernate培训第一天

    hibernate培训第一天的课程主要围绕着Java对象持久化框架Hibernate展开,这是一款广泛应用于企业级开发中的ORM(Object-Relational Mapping)解决方案。在学习Hibernate的过程中,首先我们需要理解其核心概念,包括...

    hibernate培训第四天

    9. **缓存机制**:为了提高性能,Hibernate引入了缓存机制,包括第一级缓存(Session缓存)和第二级缓存(可选)。理解缓存的工作原理和配置,可以有效优化应用程序性能。 10. **事务管理**:在Java应用中,事务...

    2017黑马程序员第一天Hibernate讲义,笔记,源码

    【标题】中的“2017黑马程序员第一天Hibernate讲义,笔记,源码”表明这是一个关于Hibernate框架的初学者教程,由知名的IT培训机构黑马程序员在2017年制作,内容可能包括讲义、学习笔记以及相关的源代码示例。...

    Hibernate5.0-4天学习笔记.rar

    第二天,课程深入到了查询机制,包括HQL(Hibernate Query Language)和Criteria API。HQL是一种面向对象的查询语言,其语法类似于SQL,但更加面向对象,使得我们可以直接按照对象的属性进行查询。Criteria API则...

    hibernate开发jar包

    8. **第二级缓存**:Hibernate支持缓存机制,提高性能,第二级缓存可以跨会话共享,可以使用第三方缓存实现,如EhCache。 9. **事务管理**:Hibernate提供了集成的事务处理机制,可以基于JTA或JDBC进行事务控制。 ...

    hibernate3.6.10.Final

    6. **缓存机制**:一级缓存由SessionFactory管理,二级缓存可配置第三方缓存服务如Ehcache,提高性能。 7. **事件监听**:可以通过实现特定接口或者使用注解,实现在对象生命周期中的不同阶段执行自定义逻辑。 8. **...

    hibernate五天学习笔记(txt)

    第二天,我们将深入探讨Hibernate的配置。这包括如何创建Hibernate的配置文件(hibernate.cfg.xml),配置数据库连接信息,以及设置实体类的映射文件(.hbm.xml)。同时,我们还会学习如何使用Annotation来代替XML...

    hibernate学习笔记第三天的源码

    在深入探讨Hibernate学习笔记第三天的源码之前,先让我们简单了解一下Hibernate。Hibernate是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了一种方便的方式来管理数据库操作。通过Hibernate,开发人员...

    黑马程序员_hibernate框架开发2016版讲义和笔记资料_day1_day2_day3_day4

    5.1 第二级缓存:利用Hibernate的二级缓存提高性能,例如使用EHCache或Infinispan。 5.2 lazy loading:延迟加载策略,只在真正需要时加载关联对象,避免内存消耗过大。 5.3 分页查询:使用Criteria的...

    传智博客Hibernate框架2016版笔记资料day01~02

    7. **缓存机制**:解释Hibernate的第一级缓存和第二级缓存,以及如何配置和使用它们来提高性能。 8. **事务管理**:讨论Hibernate中的事务处理,包括自动提交、手动提交和回滚,以及事务隔离级别的概念。 通过深入...

    传智博客Hibernate框架2016版笔记资料day03~04

    6. **缓存策略**:Hibernate提供了第一级缓存和第二级缓存,这部分内容可能会讲解如何配置和使用它们,以提高数据访问效率。 7. **高级特性**:可能还会涉及到一对一、一对多、多对一、多对多的关联映射,以及懒...

    hibernate3.3.2 jar

    8. **缓存机制**: Hibernate3.3.2引入了第一级缓存和第二级缓存,提高了数据访问效率。第一级缓存是Session级别的,每个Session都有一个本地缓存;第二级缓存则可以跨Session共享,通常由插件如Ehcache实现。 9. **...

    黑马程序员hibernate框架开发2016版视频day1-day4源码笔记

    第二天的内容通常涉及到对象关系映射的深入探讨,包括一对一、一对多、多对一和多对多关系的映射实现。这部分将解释如何在实体类之间建立关联,并在映射文件中配置这些关联规则。此外,还将介绍懒加载和立即加载策略...

Global site tag (gtag.js) - Google Analytics