java hibernate 插入数据_java - Hibernate批量插入数据总是插入不完整

在利用hibernate向数据库插入数据的时候发现总共2000多条数据只能插入一部分到数据库中,debug的时候发现在循环中确实是建立了对象并且调用了save()方法的

我的代码如下

Configuration configuration = new Configuration().configure();

SessionFactory sessionFactory = configuration.buildSessionFactory();

Session session = sessionFactory.openSession();

Transaction tx = session.beginTransaction();

String file = "src/1.xlsx";

InputStream is = null;

try {

is = new FileInputStream(file);

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

XSSFWorkbook xssfWorkbook = null;

try {

xssfWorkbook = new XSSFWorkbook(is);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 获取每一个工作薄

for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) {

XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet);

if (xssfSheet == null) {

continue;

}

// 获取当前工作薄的每一行

for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {

XSSFRow xssfRow = xssfSheet.getRow(rowNum);

if (xssfRow != null) {

XSSFCell one = xssfRow.getCell(0);

XSSFCell two = xssfRow.getCell(1);

XSSFCell three = xssfRow.getCell(2);

String name = getValue(three);

String code;

if (getValue(one).equals("沪市"))

code = "sh" + getValue(two);

else

code = "sz" + getValue(two);

StockName2Code s = new StockName2Code();

s.setCode(code);

s.setName(name);

session.save(s);

if (rowNum % 20 == 0) {

session.flush();

session.clear();

}

}

}

}

tx.commit();

session.close();

sessionFactory.close();

我的配置文件如下

` /p>

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

com.mysql.jdbc.Driver

jdbc:mysql://*******/******?useUnicode=true&characterEncoding=UTF-8

root

********

org.hibernate.dialect.MySQL5Dialect

true

true

update

`

虽然并没有抛出内存用完的异常,但是因为在搜索的时候发现可能是由于hibernate缓存的问题,所以加上了每20条强制刷新的代码块,但是最后发现还是没有效果,插入操作还是只能进行一部分,不知道还有没有什么可能的原因?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值