国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

java - Hibernate批量插入數(shù)據(jù)總是插入不完整
某草草
某草草 2017-05-17 09:59:07
0
1
668

在利用hibernate向數(shù)據(jù)庫插入數(shù)據(jù)的時候發(fā)現(xiàn)總共2000多條數(shù)據(jù)只能插入一部分到數(shù)據(jù)庫中,debug的時候發(fā)現(xiàn)在循環(huán)中確實是建立了對象并且調(diào)用了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;
        }
        // 獲取當(dāng)前工作薄的每一行

        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();

我的配置文件如下

` <!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>
    <!-- Database connection settings -->

    <!-- 表示使用 mysql 數(shù)據(jù)庫驅(qū)動類 -->
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>

    <!-- jdbc 的連接 url 和數(shù)據(jù)庫 -->
    <property name="connection.url">jdbc:mysql://*******/******?useUnicode=true&amp;characterEncoding=UTF-8</property>

    <!-- 數(shù)據(jù)庫用戶名 -->
    <property name="connection.username">root</property>

    <!-- 密碼(這里為空) -->
    <property name="connection.password">********</property>

    <!-- JDBC connection pool (use the built-in) -->
    <!-- <property name="connection.pool_size">1</property> -->

    <!-- 數(shù)據(jù)庫使用的方言 -->
    <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>

    <!-- Echo all executed SQL to stdout -->
    <!-- 設(shè)置 打印輸出 sql 語句 為真 -->
    <property name="show_sql">true</property>

    <!-- 設(shè)置格式為 sql -->
    <property name="format_sql">true</property>

    <!-- 第一次加載 hibernate 時根據(jù)實體類自動建立表結(jié)構(gòu),以后自動更新表結(jié)構(gòu) -->
    <property name="hbm2ddl.auto">update</property>

    <!-- 映射文件 -->
    <mapping class="pojo.StockName2Code" />
</session-factory>

</hibernate-configuration> `

雖然并沒有拋出內(nèi)存用完的異常,但是因為在搜索的時候發(fā)現(xiàn)可能是由于hibernate緩存的問題,所以加上了每20條強(qiáng)制刷新的代碼塊,但是最后發(fā)現(xiàn)還是沒有效果,插入操作還是只能進(jìn)行一部分,不知道還有沒有什么可能的原因?

某草草
某草草

全部回復(fù)(1)
世界只因有你

hibernate已經(jīng)設(shè)置為show_sql了,打印出來sql數(shù)量跟excel數(shù)據(jù)數(shù)量一致嗎

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板