java sequence是什么?让我们一起来了解一下吧!
java sequence是指java程序中的数据库。sequence是数据库按特定规则自动增加的数字序列,自动增加因此得出的数据不会出现重复。
sequence主要有以下两个功能:
1. 它可以作为代理主键,唯一识别。
2. 它可以记录数据库里的最新变化的语句,并且随着变化而发生更新。
Sequence的使用方法有:
create seqence sequence_name [start with n1] ----------------->n1到n5都是整数;start with 生成的第一个n1值[increment by n2] -----------------> increment by n2 递增量,可以为正整数或负整数,指明每一次增加多少 [maxvalue n3|no maxvalue] ----------------->maxvalue最大值,no maxvalue用于指定序列没有上限 [cache n5|no cache] ----------------->cache 用高速缓存中可以预分配的序列号个数,默认是20。 如果缓存中的序列号没有用完就关闭数据库等其它原因。
java中实现sequence,以Mysql为例:
package sequence;
import java.util.HashMap;
import java.util.Map;
import java.sql.SQLException;
/**
* @des: Java实现的Sequence工具
*/
public class SequenceUtils {
private static SequenceUtils _instance = new SequenceUtils();
private Map keyMap = new HashMap(20); //Sequence载体容器
private static final int POOL_SIZE = 10; //Sequence值缓存大小
/**
* 禁止外部实例化
*/
private SequenceUtils() {
}
/**
* 获取SequenceUtils的单例对象
* @return SequenceUtils的单例对象
*/
public static SequenceUtils getInstance() {
return _instance;
}
/**
* 获取下一个Sequence键值
* @param keyName Sequence名称
* @return 下一个Sequence键值
*/
public synchronized long getNextKeyValue(String keyName) {
KeyInfo keyInfo = null;
Long keyObject = null;
try {
if (keyMap.containsKey(keyName)) {
keyInfo = keyMap.get(keyName);
} else {
keyInfo = new KeyInfo(keyName, POOL_SIZE);
keyMap.put(keyName, keyInfo);
}
keyObject = keyInfo.getNextKey();
} catch (SQLException e) {
e.printStackTrace();
}
return keyObject;
}
}以上就是小编今天的分享了,希望可以帮助到大家。