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

hibernate的id生成方式以及Hibernate中对类关系的处理

阅读更多

一、id生成方式
1,sequence 只适用于Oracle
2,identity 自增列,适用于SQLServer、MySql
3,increment 取最大值加一
4,native 根据底层数据库指定生成方法
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">150 </param>
</generator>
</id>
以上是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生成实体类

    - 在生成实体类之前,建议先对数据库表进行一定的规范化处理,如合理设计字段、添加注释等,这样生成的实体类会更加规范易读。 - 生成的实体类默认可能包含所有字段的getter和setter方法,对于不需要持久化的字段...

    Hibernate教程02_ID生成策略

    本教程将详细讲解Hibernate中的ID生成策略,以及如何在实际项目中灵活应用。 首先,ID生成策略是Hibernate为了保证每个实体对象在数据库中的唯一性而设计的一种机制。它定义了如何生成和分配给新创建的对象一个唯一...

    自动生成hibernate映射文件和实体类

    如果没有自己勾选一下,下一步,可以设置每张表中 id 增长方式,及生成的映射文件名称。 最后,在 MyEclipse Enterprise 视图下,所有实体类以及配置文件已生成。这便完成了使用 MyEclipse 自动生成 Hibernate 映射...

    hibernate自动生成数据库文件

    4. **注解**:在Java实体类中使用注解是定义对象关系映射的一种方式。例如,`@Entity`表示这个类对应一个数据库表,`@Table(name="table_name")`指定表名,`@Id`标记主键字段,`@Column`定义字段属性等。通过这些...

    Hibernate自动生成表demo

    在Hibernate中,实体类是对应数据库中表的Java类。我们可以通过在实体类上使用特定的注解来指定其属性如何映射到数据库表的列。例如,`@Entity`注解表示该类是一个实体,`@Table`注解定义了实体对应的数据库表名,`@...

    java根据实体类生成Hibernate映射文件

    映射文件是Hibernate中的关键元素,它定义了Java实体类与数据库表之间的对应关系。本主题将深入探讨如何根据Java实体类自动生成Hibernate的映射文件,这对于不使用MyEclipse等集成开发环境的开发者来说尤其实用。 ...

    常用Hibernate主键生成策略

    本文将详细介绍Hibernate提供的几种常见的主键生成策略,包括assigned、increment、identity以及native等,并探讨它们各自的适用场景及优缺点。 #### 二、主键概述 主键可以分为两种类型:自然主键和代理主键。 1....

    hibernate dao 生成工具

    Hibernate DAO(Data Access Object)生成工具是用于自动化创建数据访问层对象的实用程序,它可以显著提高开发效率,尤其是在处理大量数据库交互的项目中。DAO模式是一种设计模式,它提供了对数据库操作的抽象,使得...

    根据hibernate反向生成数据库的java代码

    此外,还会为每个类生成@Id注解,标识主键字段,以及可能的@ManyToOne、@OneToMany、@OneToOne、@ManyToMany等关系映射注解,来处理表之间的关联关系。 3. 数据库元数据: 在反向工程过程中,Hibernate首先获取...

    Hibernate中主键生成策略

    以下是对Hibernate中主键生成策略的详细解释。 1. **Identity策略**: 这种策略在数据库级别生成主键,常见于MySQL和SQL Server。当一个新对象被保存时,数据库会自动为该对象分配一个唯一的ID。在Hibernate中,...

    利用hibernate自动生成hbm.xml文件和entity类.doc

    7. 处理主外键关系:如果存在主外键关系,可以选择 Include,将主外键关系包括在生成的文件中。 8. 完成反转:点击 Finish,完成反转过程。 三、 生成的文件解释 在反转过程完成后,将生成以下文件: * Entity 类:...

    hibernate映射主键生成策略native

    在Hibernate中,主键生成策略主要包括以下几种: - **identity**:由数据库自动分配一个唯一值,适用于支持自增字段的数据库如MySQL。 - **sequence**:使用数据库提供的序列生成主键,适用于Oracle等数据库。 - **...

    如何使用Hibernate Tools生成Entity Bean

    在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库。为了简化开发过程,Hibernate提供了一款名为Hibernate Tools的插件,该插件可以集成到Eclipse、...

    hibernate自动生成Pojo

    Hibernate 是一个流行的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,而无需编写大量的SQL语句。在开发过程中,手动创建所有对应的Java POJO(Plain Old Java Object,简单Java对象)类...

    hibernate映射文件生成数据库

    在Java开发领域,Hibernate是一个非常流行的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式处理数据库操作。本文将深入探讨如何利用Hibernate的映射文件来生成数据库,以此提高开发效率并减少手动创建...

    hibernate实体生成工具

    在Hibernate中,实体类代表数据库中的表,每个实体类对应一个表,类的属性对应表的列。实体类通常会使用`@Entity`注解来标记,并通过`@Table`注解指定对应的数据库表名。实体类的属性使用`@Column`注解来映射表的列...

    hibernate动态生成表结构

    在Hibernate中,表与表之间的关系可以通过一对多(OneToMany)、多对一(ManyToOne)、一对一(OneToOne)、多对多(ManyToMany)四种方式表示。以下是一些基本示例: 1. 一对一关系:使用`@OneToOne`注解,可以...

    eclipse 配置 hibernate tools 反向生成 pojo类 注解

    本文将详细讲解如何在Eclipse中配置Hibernate Tools以实现注解方式的POJO类生成。 首先,你需要确保已经安装了Hibernate Tools插件。如果尚未安装,可以通过以下步骤进行: 1. 打开Eclipse,进入“Help”菜单,...

    hibernate自动生成

    1. **Entity(实体类)**:在Hibernate中,Entity是Java对象,它们代表数据库中的表。通过@Entity注解,Hibernate知道这是一个需要映射到数据库的类。自动生成的Entity类通常包含属性(对应表的字段)和getter/...

Global site tag (gtag.js) - Google Analytics