?? 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 + -