📄 dbimpl3.java
字号:
package lianxi;
import org.hibernate.*;
import org.hibernate.cfg.*;
import org.com.gather.*;
import org.com.gather.exception.*;
import java.util.*;
import java.sql.*;
public class DBImpl3 implements DB{
private Properties pro = null;
private Log log = null;
private BackUp back = null;
private static String key = "key";
private static DBImpl3 instance = null;
//属性由Spring注入
private DBImpl3(Properties pro){
this.pro = pro;
}
//私有的构造器,为了获取实例,要提供一个静态方法,
//通过该方法获取实例
public static DBImpl3 getInstance(Properties pro){
if(instance == null){
synchronized(key){
if(instance == null){
instance = new DBImpl3(pro);
}
}
}
return instance;
}
public Session getSession(){
TestSessionFactory factory = TestSessionFactory.getInstance();
return factory.getHibernateSession();
}
public void setLog(Log log){
this.log = log;
}
public void setBackUpServer(BackUp back){
this.back = back;
}
public void storeToDB(Collection col)throws SQLException,ClassNotFoundException,DBException{
Session session = getSession();
Transaction tx = session.beginTransaction();
ArrayList list = new ArrayList();
//获取批量入库大小
String s_size = pro.getProperty("batchSize");
int size = new Integer(s_size).intValue();
Iterator iter = col.iterator();
int i = 0;
//获取入库前的时间
long start = System.currentTimeMillis();
//迭代
while(iter.hasNext()){
i++;
BIDR bidr = (BIDR)iter.next();
iter.remove();
//把要入库的对象,直接保存到Hibernate的session对象
session.save(bidr);
//当积攒的数量达到batch-size之后,再一并入库,
//并且把缓存的数据清空
if(i == size){
//立即执行入库操作
session.flush();
//清空session的缓存
session.clear();
log.writeDebug("size="+size+" ,清空缓存");
i = 0;
}
}
//对剩余的数据进行入库操作
session.flush();
//清空缓存
session.clear();
//提交事务
tx.commit();
long end = System.currentTimeMillis();
log.writeDebug("********入库成功********");
log.writeInfo("耗时 :"+(end-start)+" ms");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -