java学习:Hibernate学习-用oracle sequence序列生成ID的配置示例

简介: 接上回继续,TMP_EMP中的ID是根据序列SQ_TMP_EMP来生成的,需要在TmpEmp.hbm.xml中设置:             SQ_TMP_EMP         这样运行时,Hibernate就会自动从SQ_TMP_EMP中取nextval用来填充到ID字段中 示例代码: 先创建一个工具类 package app; import org.

上回继续,TMP_EMP中的ID是根据序列SQ_TMP_EMP来生成的,需要在TmpEmp.hbm.xml中设置:

  <id name="id" type="long">
   <column name="ID" not-null="true" sql-type="NUMBER" unique="true"/>
   <generator class="sequence">
    <param name="sequence">SQ_TMP_EMP</param>   
   </generator>
  </id>

这样运行时,Hibernate就会自动从SQ_TMP_EMP中取nextval用来填充到ID字段中

示例代码:

先创建一个工具类

package app;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class HibernateUtils {
	
	private HibernateUtils(){
		
	}
	
	static SessionFactory sessionFactory;
	
	/*
	 * 取得Hibernate的Session
	 */
	public static Session getSession(){
		if (sessionFactory == null) {
			sessionFactory = new Configuration().configure().buildSessionFactory();
		}
		return sessionFactory.openSession();
	}
	
	
	/*
	 * insert记录
	 */
	public static  boolean addObject(Object obj){
		Session ss = null;
		Transaction ts = null;
		boolean result = false;
		try		
		{
			ss = getSession();
			ts = ss.beginTransaction();
			ss.save(obj);
			ts.commit();
			result = true;
		}
		finally{
			ss.close();
		}		
		return result;
		
	}

}

添加记录的类

package app;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import domain.TmpEmp;

import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class Hello {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		TmpEmp emp = new TmpEmp();
		emp.setName("张三峰");
		emp.setSalary(new BigDecimal(1000));
		emp.setSex('M');		
		emp.setBirthday(new Date(1985-1900,12-1,1));//1985-12-1号
		boolean b = HibernateUtils.addObject(emp);
		if (b){
			System.out.println("插入成功,新记录的ID是:" + emp.getId());
		}
		else{
			System.out.println("插入失败!");
		}
		
	}

	

}

运行结果:

Hibernate: select IGSA.SQ_TMP_EMP.nextval from dual
Hibernate: insert into IGSA.TMP_EMP (NAME, BIRTHDAY, SEX, SALARY, ID) values (?, ?, ?, ?, ?)
插入成功,新记录的ID是:210  

 

当然,除用.hbm.xml来配置外,等效的注解方式,可以参考下面的写法:

1     @Id    
2     @SequenceGenerator(name="bkdex_seq_generator",sequenceName="SQ_BKD_EX")
3     @GeneratedValue(generator="bkdex_seq_generator",strategy=GenerationType.SEQUENCE)
4     @Column(name = "ID", unique = true, nullable = false, precision = 22, scale = 0)
5     public BigDecimal getId() {
6         return this.id;
7     }

基本上这样就行了,但是实际运行会发现sequence每次并不是加1,而是一个其它的数,如果想要每次加1,参考下面这样:

1     @Id
2     @SequenceGenerator(name = "SEQ_ORDER", sequenceName = "SEQ_ORDER", allocationSize = 1)
3     @GeneratedValue(generator = "SEQ_ORDER", strategy = GenerationType.SEQUENCE)
4     @Column(name = "ID", unique = true, nullable = false, precision = 22, scale = 0)
5     public BigDecimal getId() {
6         return this.id;
7     }
allocationSize=1 这个是关键
目录
相关文章
|
2月前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——TestStu.java
hibernate正向生成数据库表以及配置——TestStu.java
18 1
|
18天前
|
Java
Java配置环境
Java配置环境
20 0
Java配置环境
|
1天前
|
Oracle 关系型数据库 Java
java操作多数据源将oracle数据同步达梦数据库
java操作多数据源将oracle数据同步达梦数据库
|
2天前
|
IDE Java 应用服务中间件
JDK1.6.0+Tomcat6.0的安装配置(配置JAVA环境)
JDK1.6.0+Tomcat6.0的安装配置(配置JAVA环境)
12 1
|
7天前
|
Oracle Java 关系型数据库
windows 下 win11 JDK17安装与环境变量的配置(配置简单详细,包含IJ中java文件如何使用命令运行)
本文介绍了Windows 11中安装JDK 17的步骤,包括从官方网站下载JDK、配置环境变量以及验证安装是否成功。首先,下载JDK 17的安装文件,如果没有Oracle账户,可以直接解压缩文件到指定目录。接着,配置系统环境变量,新建`JAVA_HOME`变量指向JDK安装路径,并在`Path`变量中添加。然后,通过命令行(cmd)验证安装,分别输入`java -version`和`javac -version`检查版本信息。最后,作者分享了如何在任意位置运行Java代码,包括在IntelliJ IDEA(IJ)中创建的Java文件,只需去掉包声明,就可以通过命令行直接运行。
|
11天前
|
消息中间件 安全 Java
在Spring Bean中,如何通过Java配置类定义Bean?
【4月更文挑战第30天】在Spring Bean中,如何通过Java配置类定义Bean?
20 1
|
13天前
|
Java Windows
java——安装JDK及配置解决常见问题
java——安装JDK及配置解决常见问题
|
15天前
|
Java Spring
【Java】配置多数据源报错循环依赖
【Java】配置多数据源报错循环依赖
25 1
|
16天前
|
Java Spring 容器
如何用基于 Java 配置的方式配置 Spring?
如何用基于 Java 配置的方式配置 Spring?
|
17天前
|
Java Linux 开发工具
Linux 配置 Java/JDK 环境
Linux 配置 Java/JDK 环境
24 0

推荐镜像

更多