1、如果主键字段为自增类型。
那么对应的.hbm.xml文件中的id字段的xml声明,
应该这么写:
<generator class="native" />
例如:
<id
column="user_id"
name="Id"
type="integer"
>
<generator class="native" />
</id>
其实这个native并非实际的类型,而是hiberante根据
当前使用的数据库,自动使用对应的类型。
例如:如果sqlserver,native就对应identity
见Hiberante参考:
native(本地)
根据底层数据库的能力选择identity, sequence 或者hilo中的一个。
2、如果主键字段不设置为自增,但是是int型的。
可以使用increment,由hibernate产生主键。
<generator class="increment" />
不过这种方法,对于并发量大的应用,似乎最好不要采用。
见hiberante参考:
increment(递增)
用于为long, short或者int类型生成唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。
在集群下不要使用。
3、如果使用uuid.hex产生的随机32位数最为主键。
那么数据库的id字段类型为char,长度为32
hbm.xml中写为:
<generator class="uuid.hex" />
另外,uuid.string也是功能类似。
uuid.hex产生的是32位的16进制数字的字符串。
而uuid.string产生的是16个字符长的任意ASCII字符组成的字符串
见参考:
uuid.hex
用一个128-bit的UUID算法生成字符串类型的标识符。在一个网络中唯一(使用了IP地址)。UUID被编码为一个32位16进制数字的字符串。
uuid.string
使用同样的UUID算法。UUID被编码为一个16个字符长的任意ASCII字符组成的字符串。不能使用在PostgreSQL数据库中
分享到:
相关推荐
以上就是Hibernate主键生成的常见策略,每种策略都有其适用的场景。在实际开发中,应根据数据库类型和需求选择合适的主键生成策略,确保数据的一致性和完整性。理解并正确配置这些策略,将有助于提高程序的稳定性和...
Hibernate通过`org.hibernate.id.SequenceGenerator`类来实现序列主键生成器。在`nextValue()`方法中,它会与数据库进行交互,获取序列的下一个值。这个过程涉及到JDBC操作,包括SQL的执行和结果的处理。 3. **...
以下是对Hibernate主键类型及其配置的详细说明: 1. **uuid.hex**: 这种生成器使用128位算法生成一个32位的字符串。由于其通用性,它适用于所有类型的数据库。在`.hbm.xml`映射文件中,你可以这样配置: ```xml ...
在 Hibernate 中,`generator` 属性是用于指定如何生成实体类的唯一标识(通常为主键)的一种机制。这个属性可以配置在 `hibernate.hbm.xml` 文件中的 `<id>` 标签内,它允许你选择不同的策略来生成 ID。 1. **...
- `name`: 与`@GeneratedValue`中的`generator`属性关联,表示生成器的名称。 - `table`: 指定用于管理主键值的特殊表名称。 - `pkColumnName`: 特殊表中用于区分不同业务表的列名。 - `pkColumnValue`: 特殊表...
Oracle版Generator是一个专门针对Oracle数据库设计的SSM框架实体类生成器。它利用Oracle数据库的元数据信息,自动生成与数据库表对应的Java实体类,大大减少了手动编写这些基础代码的时间。通过这个工具,开发者可以...
4. **代码生成工具**:如压缩包中的"msp_generator_new"可能是一个定制化的代码生成器,它可以基于数据库的元数据自动生成上述的Entity、映射文件和DAO。这类工具通常会提供配置选项,比如选择数据库连接、指定生成...
这里,`@GeneratedValue(generator = "uuid2")`指定了使用uuid2生成策略,而`@GenericGenerator(name = "uuid2", strategy = "uuid2")`定义了一个名为“uuid2”的生成器,其策略为“uuid2”,这是JPA中预定义的UUID...
这款代码生成器的特点在于其易于操作和内置的中文语言支持,使得国内开发者也能无障碍地使用。在Windows 7环境下运行良好,意味着它对系统资源的要求不高,兼容性较强,适合各种开发环境。 使用...
* sequence(序列):在 DB2, PostgreSQL, Oracle, SAP DB, McKoi 中使用序列(sequence),而在 Interbase 中使用生成器(generator)。返回的标识符是 long, short 或者 int 类型的。 * assigned(自行分配):...
- **功能**:声明一个Hibernate主键生成策略,支持多种策略。 - **属性**: - `name`:生成器名称。 - `strategy`:具体生成策略。 - `parameters`:获取具体的生成器所用到的参数。 - **示例**: ```java @...
`@TableGenerator` 是一个JPA(Java Persistence API)注解,用于在实体类中定义自增序列的生成器,主要用于为数据库表中的主键生成唯一的ID。这篇博文链接指向的是一个关于`@TableGenerator` 使用的讨论,虽然具体...
要使用这个工具,开发者首先需要解压文件,然后按照说明配置相关的参数,运行代码生成器,最后将生成的代码整合到自己的SSH2项目中。通过这种方式,开发者可以更专注于业务逻辑的实现,而不用在基础架构上花费太多...
通过在Hibernate映射文件中正确配置序列生成器,可以确保每个实体都有一个唯一的标识符,同时避免了手动管理ID的复杂性和潜在错误。这种方法尤其适用于大型企业级应用,其中数据完整性是至关重要的。理解并掌握这一...
- **作用**:指定 Hibernate 的主键生成策略。 - **属性**: - `name`:生成器的名称。 - `strategy`:指定具体的生成策略。 - `parameters`:获取 strategy 所需的参数。 - **策略**: - `native`:根据不同的...
例如,可以使用`<generator class="sequence">`定义序列生成器,或者使用`<generator class="native">`让Hibernate自动选择适合当前数据库的主键生成策略,如自动递增。 在启动Hibernate时,我们需要创建`...
默认情况下,Hibernate可能会选择自动增长策略,但根据实际需求,可能需要使用`assigned`策略,即主键由应用逻辑生成,例如使用序列或自定义ID生成器。修改后的配置如下: ```xml <generator class="assigned...