今天讨论了hibernate优化的问题。
总结一下有以下几点:
1.查询必须的数据
2.尽量减少与数据库之间的交互
3.关系维护时候,使用多方inverse
inverse使用方法:①one to many 时在one端设置inverse="ture";②many to many时只能在一边设置true,另一端必须设为false。
4.数据量比较大的时候
1)导入:两种方式
a)jdbc(能够使用JDBC就不要使用hibernate,因为hibernate是封装了jdbc)
批处理:
①sql批处理
pstmt = conn.preparxxx();
for(User user:users){
sql = "insert xxx values('" user.getUserName() "','" user.getPassword "')";
pstmt.addBatch();
if(count==0){
pstmt.executeBatch()
}
}
②数据批处理
sql = "inser xxx ?,?,?,?";
pstmt = conn.preparxxx();
for(User user:users){
pstmt.setxxx();
pstmt.addBatch();
if(count==0){
pstmt.executeBatch()
}
}
List users = xxx;
for(User user:users){
sql = "insert xxx ?,?,?"
pstmt = conn.prepxxx(sql);
pstmt.setxxx();
pstmt.execute();
}
b)hibernate方式
for(User user:users){
session.save(user);
if(count==0){
session.flush();
}
}
2)导出
from TstUser
for(Order order :user.orders){
}
select user,order from xxx
阅读(1163) | 评论(0) | 转发(0) |