自增Id在数据库中还是蛮常用的,以前没有用Hibernate的时候都是写方法得到表中最后一条记录的Id,然后就是一系列的操作,我想Hibernate应该也是类似的原理.
配置一句话,将Hibernate映射文件id那一项修改一个属性<generator class="increment" />
贴下我的测试代码:
package test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.bean.hib.MessageContent;
public class HibernateIdTest {
public static void main(String[] args)
{
MessageContent messageContent = new MessageContent();
messageContent.setMessageContent("lovehui");
SessionFactory factory =
new Configuration().configure().buildSessionFactory();
Session session = factory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
//do some work
System.out.println(session.save(messageContent).toString());
tx.commit();
}
catch (Exception e) {
if (tx!=null) tx.rollback();
e.printStackTrace();
}
finally {
session.close();
}
}
}
设置了自增Id之后就不用给那一项显式赋值了,还有一点,要得到那个Id值根本不用任何操作,它自动返回的就是那个Id值~~~
分享到:
相关推荐
本文详细介绍了在Java环境中如何获取自增ID的三种主要方法:XML配置方法、JDBC方法以及Hibernate方法。每种方法都有其适用场景,开发者可以根据项目的具体需求选择最适合的方案。无论是通过框架还是直接使用JDBC API...
在Java的持久化框架Hibernate中,ID生成策略是至关重要的一个环节。它是用来唯一标识数据库中每一行记录的关键部分。本教程将详细讲解Hibernate中的ID生成策略,以及如何在实际项目中灵活应用。 首先,ID生成策略是...
在Hibernate中定义联合主键主要依赖于`<composite-id>`标签。如示例文件所示,`Users`类被设计为具有联合主键,该主键由`name`和`tel`两个字段组成。在`<composite-id>`标签内,通过`<key-property>`子标签分别指定...
表中包含`id`, `name`, `age`, `score`四个字段,其中`id`字段设置为自增主键。这是通过以下SQL语句实现的: ```sql CREATE DATABASE IF NOT EXISTS `crud`; USE `crud`; DROP TABLE IF EXISTS `student`; CREATE ...
)Hibernate: select last_insert_id()表中有个主键是自增列。可是在以往的项目中,没发现有这样的问题。于是在网上各种找也找不到原因。心想可能是配置问题。 最终在persistence.xml配置文件中找
在Hibernate中,主键通过`@Id`注解标记,并可以使用`@GeneratedValue`控制自增策略。 3. **持久化(Persistence)**: Hibernate通过`Session`接口实现对象的持久化,它可以保存、更新和删除实体对象,并将这些变化...
注解在Hibernate中扮演着关键角色,例如@Entity定义实体类,@Table指定表名,@Id标识主键,@GeneratedValue管理自增策略等。这个文档可能由雷智民撰写或翻译,提供了一手的注解使用方法和实例。 综上所述,学习这些...
-- generator配置自增 --> <!-- 对于Oracle,可使用<generator class="identity"/> --> </id> <!-- 其他属性映射 --> ... </hibernate-mapping> ``` - `<class>`标签定义了实体类(`Teacher`)与表(`...
4. `@GeneratedValue`:用于指定主键生成策略,如自增、UUID等。例如: ```java @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; // ... } ``` 5. `@...
- `<id>`标签映射主键,`name`属性指定Java类中的主键属性,`<generator>`定义主键生成方式,如自增、序列等。 - `<property>`标签映射普通属性,`name`对应类属性,`column`对应数据库表的列。 6. **使用...
常见的注解有@Entity表示实体类,@Table指定对应数据库表,@Id标识主键,@GeneratedValue处理自增字段等。 四、Session和Transaction 在Hibernate中,Session是持久化操作的主要接口,负责对象的保存、更新、删除...
native策略则是由数据库自身决定主键生成,比如在MySQL中通常是自增,这样在查找和删除数据时更为便捷,但在插入时会稍慢。assigned策略允许开发者自定义主键生成方式,可以在程序运行时手动设置,但需注意在save()...
- **identity**:由数据库自动分配一个唯一值,适用于支持自增字段的数据库如MySQL。 - **sequence**:使用数据库提供的序列生成主键,适用于Oracle等数据库。 - **hilo**:混合高低位算法,通过两个序列分别生成...
这里的`User`类就是一个实体类,`@Id`注解标识`id`字段作为主键,`@GeneratedValue`表示主键自增。 其次,映射文件(Mapping File)通常以`.hbm.xml`为扩展名,它定义了实体类与数据库表之间的关系。映射文件包含了...
这里,`@Id`注解标识`id`字段作为主键,`@GeneratedValue`表示主键自增。 2. **配置映射**:使用`@Table`注解指定实体类对应的数据库表名,如: ```java @Table(name = "USER") public class User { // ... } ``` ...
`@Id`注解标记实体类中的主键字段,而`@GeneratedValue`用于指定主键生成策略,如自增、序列等。 ```java @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long ...
主键生成策略还有多种方式,如`Assigned`(由外部程序负责),`Increment`(每次自增1,适用于MySQL),`Uuid`(生成UUID字符串),以及`Hilo`(高效ID生成算法)。选择哪种策略取决于具体需求和数据库类型。 ...
1. Entity:通过@Entity注解标记的类表示数据库表,@Id标注主键字段,@GeneratedValue指定自增策略。 2. Table/Column:使用@Table和@Column注解来指定表名和字段名,其他如@Temporal、@Lob等注解用于特殊类型的映射...