在*.hbm.xml必须声明的<generator>子元素是一个Java类的名字,用来为该持久化类的实例生成唯一的标识。
<generator class="sequence"/>
这是一个非常简单的接口;某些应用程序可以选择提供他们自己特定的实现。当然,Hibernate提供了很多内置的实现。下面是一些内置生成器的快捷名字:
increment(递增)
用于为long, short或者int类型生成唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。 在集群(什么是集群?)下不要使用。
identity
对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的内置标识字段提供支持。返回的标识符是long, short 或者int类型的。
sequence (序列)
在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence),而在Interbase中使用生成器(generator)。返回的标识符是long, short或者 int类型的。
hilo (高低位)
使用一个高/低位算法来高效的生成long, short或者 int类型的标识符。给定一个表和字段(默认分别是是hibernate_unique_key 和next_hi)作为高位值得来源。高/低位算法生成的标识符只在一个特定的数据库中是唯一的。在使用JTA获得的连接或者用户自行提供的连接中,不要使用这种生成器。
seqhilo(使用序列的高低位)
使用一个高/低位算法来高效的生成long, short或者 int类型的标识符,给定一个数据库序列(sequence)的名字。
uuid.hex
用一个128-bit的UUID算法生成字符串类型的标识符。在一个网络中唯一(使用了IP地址)。UUID被编码为一个32位16进制数字的字符串。
uuid.string
使用同样的UUID算法。UUID被编码为一个16个字符长的任意ASCII字符组成的字符串。不能使用在PostgreSQL数据库中
native(本地)
根据底层数据库的能力选择identity, sequence 或者hilo中的一个。
assigned(程序设置)
让应用程序在save()之前为对象分配一个标示符。
foreign(外部引用)
使用另外一个相关联的对象的标识符。和<one-to-one>联合一起使用。
分享到:
相关推荐
<generator class="native" /> </id> <property name="name" column="name" /> <property name="price" column="price" /> <!-- 一对多关联关系 --> <set name="cities" table="cities" inverse="true"> <key...
在这个配置文件中,`<many-to-one>`元素指定了订单与消费者之间的一对多关系。`class`属性指定了一对一关联的另一端实体类型,`column`属性则指定了外键字段。 #### 三、自身一对多关系配置示例 自身一对多关系是...
<generator class="assigned"></generator> //数据库中的主键生成策略 </id> <property name="数据库中表的其它字段所对应的持久化对象中的属性名" column="对应数据库中表的其它字段名" type="java.lang....
- `<generator class="native"></generator>`:使用`native`策略,让Hibernate根据数据库类型自动选择主键生成方式。 在查询操作中,可以使用HQL(Hibernate Query Language)或Criteria API。例如,使用HQL查询...
4. 在配置文件中,`<mapping resource>`用来加载映射文件,`<class>`节点的`name`属性对应的是Java类名,而非数据表名;`<id>`节点定义了实体的主键,`<generator>`用于指定主键生成策略。 5. 如果Hibernate代码没有...
<generator class="assigned"/> </id> <property name="name" type="java.lang.String" column="NAME"/> <one-to-one name="idCard" class="com.example.IdCard" cascade="all"/> </class> </hibernate-mapping...
这里的`<class>`节点对应数据库中的一个表,`<id>`和`<property>`节点分别代表主键和非主键字段。`name`属性对应实体类的属性名,`column`属性对应数据库表的列名。`<generator>`节点定义了主键生成策略,`native`...
8. <generator class="uuid.hex"/> 9. </id> 10. <property name="fileContent" 11. type="org.springframework.orm.hibernate3.support.BlobByteArrayType" 12. column="FILE_CONTENT" lazy="true"/> 13. …/...
这里的`hibernate-mapping`元素是整个配置文件的根节点,包含了关于实体类映射的所有信息。 ##### 2. 实体类映射 在`hibernate-mapping`元素内部,使用`class`元素来定义具体的实体类映射规则。 ```xml <class ...
在映射文件中,可以使用`<generator class="sequence">`,而在注解中使用`@GeneratedValue(strategy = GenerationType.SEQUENCE)`。 3. **Table策略**: 这个策略使用一个单独的表来管理主键生成。在Hibernate中,...
在Hibernate映射文件中,通过`<id>`标签来定义主键映射。 #### 六、数据类型映射 Hibernate提供了丰富的数据类型映射机制,支持将Java中的基本类型和复杂类型映射到数据库中的相应字段类型。例如,Java中的`String...
接下来,我们需要配置Hibernate的映射文件,将`Menu`类与数据库中的相应表进行关联。这通常涉及编写一个`.hbm.xml`文件,定义实体类和表之间的映射规则,包括字段对应、主键生成策略等。例如: ```xml <hibernate-...
- **5.1.1 文档类型**:使用`<hibernate-mapping>`元素作为映射文件的根节点,指定版本号和命名空间等信息。 - **5.1.1.1 EntityResolver**:配置EntityResolver来处理DTD或Schema的解析。 - **5.1.2 hibernate-...
`hibernate-mapping`节点是Hibernate映射文件中的顶级节点,用于定义一系列配置选项,控制整个映射文件的行为和映射规则。这些配置包括数据库连接细节、默认的映射策略等。 - **schema**: 定义了数据库的Schema名称...
<generator class="native"/> </id> <property name="age" type="java.lang.Integer"/> <property name="name" type="java.lang.String" column="name"/> </class> <!-- 显示多态关系的声明 --> <class ...
- `<hibernate-mapping>`标签:定义映射文件的根节点。 - `<class>`标签:用于映射Java实体类。 - `<id>`标签:定义主键字段的映射规则。 - `<property>`标签:映射类中的属性到数据库表的字段。 - `<generator>`...
2. **配置缓存插件**:在Hibernate配置文件中指定缓存插件,并对其进行相应的配置。 3. **实体缓存配置**:为特定实体配置缓存策略,可以选择哪些实体启用缓存以及采用何种缓存策略。 #### 示例代码 假设我们想...
- **hibernate-mapping元素**:定义映射文件的根节点。 - **class元素**:描述如何映射一个类到数据库表。 - **id元素**:指定主键的生成策略。 - Generator:主键生成器的类型。 - Hi/lo算法:一种简单的主键生成...
`@TableGenerator` 是Hibernate(一个流行的JPA实现)中的一个注解,它允许开发者定义一个数据库表来存储生成的ID序列,而不是依赖数据库自带的序列或者主键自增功能。这在分布式系统或多数据库环境中有其优势,因为...
{2.8}框架中移动的小球}{59}{section.2.8} {2.9}抽象与接口}{59}{section.2.9} {2.10}访问控制}{60}{section.2.10} {2.10.1}类的属性}{60}{subsection.2.10.1} {2.10.2}类的方法}{61}{subsection.2.10.2} {...