首页
学习
活动
专区
圈层
工具
发布

Hibernate 主键介绍

Hibernate有如下主键: ---- Native: Native主键生成方式会根据不同的底层数据库自动选择Identity、Sequence、Hilo主键生成方式。...特点是根据不同的底层数据库采用不同的主键生成方式。由于Hibernate会根据底层数据库采用不同的映射方式,因此,便于程序移植,项目中如果用到多个数据库时,可以使用这种方式。...Identity无须Hibernate和用户的干涉,使用较为方便,但不便于在不同的数据库之间移植程序。...特点是需要底层数据库支持序列,支持序列的数据库有DB2、PostgreSql 、Oracle、SAPDb 等在不同数据库之间移植程序,特别是从支持序列的数据库移植到不支持序列的数据库需要修改配置文件。...Hilo主键生成方式由Hibernate维护,所以,Hilo方式与底层数据库无关,但不应该手动修改hilo算法使用的表值,否则会引起主键重复的异常。

1.1K20

Hibernate基于主键映射的一对一关联关系

在Hibernate中,一对一关联关系的映射可以使用主键映射的方式来实现。一、什么是一对一关联关系?...在ORM框架中,一对一关系的映射可以使用外键映射、主键映射或者关联表映射来实现。二、主键映射的优点在基于主键映射的一对一关联关系中,实体关系被映射到表中,而不是使用外键或者中间表。...这种方式的优点是: 删除或更新数据库时不需要维护外键关系,因为在Hibernate中一对一关联关系使用同一个主键。 查询速度更快,因为查询操作只需要执行单个表的查询。...三、实现方式我们将通过一个简单的实例来演示如何在Hibernate中使用主键映射来实现一对一关系映射。...我们将使用主键映射方式来实现关联关系的映射。下面是两个实体类的代码。

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Hibernate配置文件hbm主键的generator可选项

    的API了解它的用法,见org.hibernate.id.SequenceGenerator 调用数据库的sequence来生成主键,要设定序列名,不然hibernate无法找到: 配置,但在Hibernate内存中生成的低位值超过此值时,就有需要到数据库的hi_value表中再次读取高位值了 使用hilo生成策略,要在数据库中建立一张额外的表,默认表名为...在内存中生成主键,每次增量为1,不依赖于底层的数据库,因此所有的数据库都可以使用,但问题也随之而来,由于是Hibernate生成的,所以只 能有一个Hibernate应用进程访问数据库,否则就会产生主键冲突...,不能在集群情况下使用 插入数据的时候hibernate会给主键添加一个自增的主键,但是一个hibernate实例就维护一个计数器,所以在多个实例运行的时候不能使用这个方法 标签时,默认就是assigned主键的生成方式 在插入数据的时候主键由用户自己添加,hibernate也不管 9、foreign 使用外部表的字段作为主键 10、select 使用触发器生成主键(主要用于早期的数据库主键生成机制

    1.4K00

    Hibernate关联查询

    Hibernate关联查询 1.1. 关联查询之延迟加载(lazy) 1.1.1. 什么是延迟加载 1.1.2. 什么是关联查询的延迟加载 1.1.3. 一对一 1.1.3.1....多对多 Hibernate关联查询 关联查询之延迟加载(lazy) 什么是延迟加载 前面单独讲过延迟加载就是在根据id查询获取的对象中只是有一个id的属性值,只有当使用其他属性的时候才会发出sql语句查询数据库...,session.load(Class cls,id)就是这个原理 什么是关联查询的延迟加载 简单的说就是在关联关系中,根据id查询对象的时候仅仅发出sql语句查询的是当前的实体类的表,并没有查询另外一张表的数据...id; private String name; private int age; private Wife wife; //Wife对象 @Id @GeneratedValue //主键生成策略...id; } public void setId(int id) { this.id = id; } @OneToOne(fetch=FetchType.LAZY) //设置wife的主键为

    1.9K10

    Hibernate的关联映射

    Hibernate在实现ORM功能的时候主要用到的文件有:映射类(*.java)、映射文件(*.hbm.xml)和数据库配置文件(*.properties/*.cfg.xml),它们各自的作用如下: 映射类...: 主键关联:即让两个对象具有相同的主键值,以表明它们之间的一一对应的关系;数据库表不会有额外的字段来维护它们之间的关系,仅通过表的主键来关联。...-- one-to-one指示hibernate如何加载其关联对象,默认根据主键加载 也就是拿到关系字段值,根据对端的主键来加载关联对象 -->... hibernate-mapping> 唯一外键关联:外键关联,本来是用于多对一的配置...> 注意:因为一对一的主键关联映射扩展性不好,当我们的需要发生改变想要将其变为一对多的时候变无法操作了,所以我们遇到一对一关联的时候经常会采用唯一外键关联来解决问题,而很少使用一对一主键关联。

    2.2K60

    Hibernate学习---关联关系映射

    关联关系是用到的最多的一种关系,非常重要,在内存中反映为实体关系,映射到DB中主键外键关系,实体间的关联,即对外键的维护,关联关系的发生,即对外键数据的改变。...--设置关联表middle的主键,在数据库中middle的主键同时也是外键和student关联--> 配置文件key为当前实体类的cid这样的配置文件你会发现数据库中新建的middle表有两个主键: ?...这样和单向关联就有很大的差别了,这里的middle在和course和student的关系中主键是不同的(当然你也可以认为是相同的,毕竟两个都是主键,这就是和单向关联的一个差别) Test: //新建课程...双向关联,双方都可以维护关联关系 到这儿我们的关联关系映射就结束了,当然我们Hibernate的只是还没学完,未完待续. 如果错误,不吝赐教。

    1.9K60

    【SSH快速进阶】——Hibernate一对一映射(one-to-one)——主键关联映射

    在Hibernate中实现一对一映射,有两种实现方式:1、主键关联;2、唯一外键关联,这里先说一下主键关联映射。   ...主键关联映射:其中一个表的主键依赖于另一张表的主键而建立起的一对一的关系,这两张互相关联的表的主键一致。   关联映射又可细分为单向关联映射和双向关联映射。...>   上述配置文件中是配置一对一关联的核心,表示一个Person对应一个IdCard。...在上面的一对一单向关联映射中,根据Person可以查到IdCard,但只根据IdCard不能查询到Person,要想根据IdCard也能查询到Person,IdCard的po和配置文件也可以这么写:   ...【 转载请注明出处——胡玉洋《【SSH快速进阶】——Hibernate一对一映射(one-to-one)——主键关联映射》】

    1.1K20

    Hibernate配置

    Hibernate配置 核心配置文件 映射配置文件 配置本地的DTD约束 01 核心配置文 Hibernate核心配置文件传递的是连接数据库的必备信息,还有一些可选配置,所以在一个使用Hibernate...的工程中需要去完成一个这样的配置文件 我们可以去下载下来的Hibernate包中的测试工程去拿一份 ?...默认名为hibernate.cfg.xml,一般不去改这个名字。因为Configuration类里面 加载核心配置文件的方法传入名就是这个 ? ? hibernate.cfg.xml ?...> hibernate-configuration> 连接不同的数据库的它的配置属性名不一样,所以它提供了一个各大数据库的配置模板...:建立类与表的映射关系 id标签:建立类中的属性与表中主键的对应关系 property标签:用于建立类中普通属性与表的对应关系 <?

    1.7K10

    Hibernate 中 一对多、多对一、 关联关系的 配置

    String name; private Set students = new HashSet(0); ....... } ---- Student.hbm.xml: hibernate-mapping...> ---- 对于双向多对多关系,必须把其中一端的属性的inverse 属性配置为true,关联的两端都可以使用元素。...其映射文件配置方式与一对多很类似,也需要一个 class 属性来设置关联的属性的类型,column 属性用来设定哪个字段去做外键关联,最后,根据业务需要,将某一方的inverse 属性设置为false。...---- 1、这里比一对多关联多一个 table 属性,table 指向数据库建立的关联的那张表。 2、Key 中的 column : 关联表中和 student 表发生关系的字段。...3、Many-to-many 中的 column 指的是关联表中与 class (com.qbz.entity.Teacher) 关联的字段。

    6.6K20

    Hibernate映射多对多关联关系

    在Hibernate中,多对多关联关系(Many-to-Many relationships)是指两个实体类之间的一种关系,其中一个实体类可以与多个另一个实体类相关联,而同样一个实体类也可以与多个另一个实体类相关联...在ORM框架中,多对多关系的映射可以使用中间表、双向一对多关系和关联实体类等多种方式实现。一、什么是多对多关联关系?...可以避免双向关联带来的复杂性问题。在本文中,我们将使用一个示例来演示如何使用中间表来映射多对多关联关系。...private Set students = new HashSet(); // getters and setters}Student实体类在Student实体类中,我们定义了一个主键的...Course实体类在Course实体类中,我们定义了一个主键的id字段和一个name字段。我们使用了@ManyToMany注解来表示Course与Student之间是多对多的关系。

    3.8K40
    领券