1.
public static void insertByBatch(int num) {
long d1 = System.currentTimeMillis();
session = HibernateSessionFactory.getSession();
ts = session.beginTransaction();
try {
for (int i = 0; i < num; i++) {
Person p=new Person();
String z=Integer.toString(i);
//p.setId(z);
p.setName(z);
session.save(p);if (i % 50 == 0) {
session.flush();
session.clear();
}
if(i%500==0){
System.out.println("提交一次");
ts.commit();
}
}
ts.commit();
} catch (Exception e) {
e.printStackTrace();
ts.rollback();
} finally {
if (session != null) {
HibernateSessionFactory.closeSession();
}
}
long d2 = System.currentTimeMillis();
System.out.println("用时为:" + (d2 - d1));
}
结果数据库里面就只有一条数据??
org.hibernate.TransactionException: Transaction not successfully started异常2.
hibernate怎么设置自动提交
jdbc:conn.setattribute(false);
hibernate???3.
3.1.在循环里面加个
if(i/50==0){
session.flush();
session.clear();
}
3.2
hibernate.cfg.xml配置文件里面的
<property name="jdbc.batch_size">50</property>语句
这2种方法是不是只要一个就可以了,还是2个都加上去?
4.
public void insertByBatch(int num) {
//conn.setAutoCommit(false);
long d1 = System.currentTimeMillis();
int z=num+1;
try {
//i<1000
conn.setAutoCommit(false);
for (int i = 0; i < num / 50; i++) {
for (int j = 0; j < 50; j++) {
String sql = "insert into t_person values(?,?)";
pstmt = conn.prepareStatement(sql);
String s = Integer.toString(--z);
pstmt.setString(1, s);
pstmt.setString(2, s);
pstmt.addBatch();
System.out.println(z);
}
pstmt.executeBatch();
conn.commit();
}} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
long d2 = System.currentTimeMillis();
System.out.println("执行时间为: " + (d2 - d1));
}
最后结果只插入1000条
怎么不是5万条呀?
public static void insertByBatch(int num) {
long d1 = System.currentTimeMillis();
session = HibernateSessionFactory.getSession();
ts = session.beginTransaction();
try {
for (int i = 0; i < num; i++) {
Person p=new Person();
String z=Integer.toString(i);
//p.setId(z);
p.setName(z);
session.save(p);if (i % 50 == 0) {
session.flush();
session.clear();
}
if(i%500==0){
System.out.println("提交一次");
ts.commit();
}
}
ts.commit();
} catch (Exception e) {
e.printStackTrace();
ts.rollback();
} finally {
if (session != null) {
HibernateSessionFactory.closeSession();
}
}
long d2 = System.currentTimeMillis();
System.out.println("用时为:" + (d2 - d1));
}
结果数据库里面就只有一条数据??
org.hibernate.TransactionException: Transaction not successfully started异常2.
hibernate怎么设置自动提交
jdbc:conn.setattribute(false);
hibernate???3.
3.1.在循环里面加个
if(i/50==0){
session.flush();
session.clear();
}
3.2
hibernate.cfg.xml配置文件里面的
<property name="jdbc.batch_size">50</property>语句
这2种方法是不是只要一个就可以了,还是2个都加上去?
4.
public void insertByBatch(int num) {
//conn.setAutoCommit(false);
long d1 = System.currentTimeMillis();
int z=num+1;
try {
//i<1000
conn.setAutoCommit(false);
for (int i = 0; i < num / 50; i++) {
for (int j = 0; j < 50; j++) {
String sql = "insert into t_person values(?,?)";
pstmt = conn.prepareStatement(sql);
String s = Integer.toString(--z);
pstmt.setString(1, s);
pstmt.setString(2, s);
pstmt.addBatch();
System.out.println(z);
}
pstmt.executeBatch();
conn.commit();
}} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
long d2 = System.currentTimeMillis();
System.out.println("执行时间为: " + (d2 - d1));
}
最后结果只插入1000条
怎么不是5万条呀?
楼主【sean1203】截止到2008-07-10 09:31:15的历史汇总数据(不包括此帖):
发帖的总数量:1 发帖的总分数:10 每贴平均分数:10
回帖的总数量:8 得分贴总数量:3 回帖的得分率:37%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:1 未结的总分数:10
结贴的百分比:0.00 % 结分的百分比:0.00 %
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
long d1 = System.currentTimeMillis();
Session session = HibernateSessionFactory.getSession();
Transaction ts = null;
int z = num + 1;
try {
for (int i = 0; i < num; i++) {
ts = session.beginTransaction();
Person p = new Person();
String s = Integer.toString(--z);
p.setId(s);
p.setName(s);
session.save(p); if (i / 50 == 0) {
session.flush();
session.clear();
}
if (i / 500 == 0) {
System.out.println("提交一次");
ts.commit();
}
}
ts.commit();
} catch (Exception e) {
e.printStackTrace();
ts.rollback();
} finally {
if (session != null) {
HibernateSessionFactory.closeSession();
}
}
long d2 = System.currentTimeMillis();
System.out.println("用时为:" + (d2 - d1));
}
为什么这样就错啦?
public static void insertByBatch(int num) {
long d1 = System.currentTimeMillis();
Session session = HibernateSessionFactory.getSession();
Transaction ts = session.beginTransaction();
int z = num + 1;
try {
for (int i = 0; i < num; i++) {
Person p = new Person();
String s = Integer.toString(--z);
p.setId(s);
p.setName(s);
session.save(p); if (i / 50 == 0) {
session.flush();
session.clear();
}
if (i / 500 == 0) {
System.out.println("提交一次");
ts.commit();
}
}
ts.commit();
} catch (Exception e) {
e.printStackTrace();
ts.rollback();
} finally {
if (session != null) {
HibernateSessionFactory.closeSession();
}
}
long d2 = System.currentTimeMillis();
System.out.println("用时为:" + (d2 - d1));
}