java创建oracle序列_java学习:Hibernate学习-用oracle sequence序列生成ID的配置示例
接
SQ_TMP_EMP
這樣運(yùn)行時(shí),Hibernate就會(huì)自動(dòng)從SQ_TMP_EMP中取nextval用來填充到ID字段中
示例代碼:
先創(chuàng)建一個(gè)工具類
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號(hào)
boolean b = HibernateUtils.addObject(emp);
if (b){
System.out.println("插入成功,新記錄的ID是:" + emp.getId());
}
else{
System.out.println("插入失敗!");
}
}
}
運(yùn)行結(jié)果:
Hibernate: select IGSA.SQ_TMP_EMP.nextval from dual
Hibernate: insert into IGSA.TMP_EMP (NAME, BIRTHDAY, SEX, SALARY, ID) values (?, ?, ?, ?, ?)
插入成功,新記錄的ID是:210
當(dāng)然,除用.hbm.xml來配置外,等效的注解方式,可以參考下面的寫法:
1 @Id2 @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 publicBigDecimal getId() {6 return this.id;7 }
基本上這樣就行了,但是實(shí)際運(yùn)行會(huì)發(fā)現(xiàn)sequence每次并不是加1,而是一個(gè)其它的數(shù),如果想要每次加1,參考下面這樣:
1 @Id2 @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 publicBigDecimal getId() {6 return this.id;7 }
allocationSize=1 這個(gè)是關(guān)鍵
總結(jié)
以上是生活随笔為你收集整理的java创建oracle序列_java学习:Hibernate学习-用oracle sequence序列生成ID的配置示例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java读取propertise配置文件
- 下一篇: java软件网络工程师面试题_170道J