1
我將大量數據保存在數據庫中,但它需要大量時間來保存3000行,所以我想每次保存數據時都要清除會話。我無法檢索會話對象。如何提高在grails中保存批量數據的性能?
錯誤:
Stacktrace follows:
Message: Cannot invoke method getCurrentSession() on null object
代碼:
def importUpload() {
def sessionFactory;
def session = sessionFactory.getCurrentSession()
User currentUser = springSecurityService.getCurrentUser();
def file = request.getFile('file')
InputStream is =file.getInputStream()
XSSFWorkbook workbook = new XSSFWorkbook(is);
int sheet_Num = workbook.getNumberOfSheets();
for (int sheetNo = 0; sheetNo < sheet_Num; sheetNo++) {
Sheet sheet = workbook.getSheetAt(sheetNo);
for (int row = 1; row < sheet.getLastRowNum(); row++) {
PrimaryOwner = sheet.getRow(row).getCell(1);
SecondaryOwner = sheet.getRow(row).getCell(2);
BusinessUnit = sheet.getRow(row).getCell(3);
ProfileTitle = sheet.getRow(row).getCell(5);
def job = Job.findByName(ProfileTitle);
if(!job){
Job jobObj=new Job();
jobObj.account = currentUser.account;
jobObj.contactName = PrimaryOwner;
jobObj.secondaryContactName = SecondaryOwner
jobObj.buisnessUnit = BusinessUnit
jobObj.name = ProfileTitle
job = jobObj.save(failOnError:true,flush:true);
session.flush()
session.clear()
}
}
你應該注入你的'高清sessionFactory'在你的類,而不是在你的方法。 –