易截截图软件、单文件、免安装、纯绿色、仅160KB

spring+hibernate在MYSQL下的一些问题

今天在帮朋友调试一个关于多线程访问同一张表引起的Lock wait timeout exceede的问题,感觉引起的原因有:
1,没有进行优化,尽量避免多线程
2,根据它后面报的异常,提醒我可以Hibernate 的Session没有使用得当,(也是我解决的方案)
3,用synchronized修饰更新表的函数
估计是原来程序在修改完该表时立刻进行了插入操作导致的,
所以我在更新后进行getHibernateTemplate().flush();
最后,在插入操作(save())时,原本他是又创建了一个新的DAO,再将记录插入到数据库中,而因为是同一个DAO,我将其删掉,直接调用save(),这个问题也就解决了!
调试之前:
public boolean createCurrentSL(Users u){
try {
String queryString = "update Appendlist set isCurrent=? where isCurrent='1' and uid=?";
Object[] objs=new Object[2];
objs[0]=false;
objs[1]=u.getUid();
getHibernateTemplate().bulkUpdate(queryString,objs);
ApplicationContext factory=new ClassPathXmlApplicationContext("applicationContext.xml");
IAppendlistDAO alDAO=(IAppendlistDAO)factory.getBean(IAppendlistDAO.BEAN_NAME);
Calendar cal=Calendar.getInstance();
if(cal.get(Calendar.MONTH)!=Calendar.DECEMBER)
cal.set(Calendar.MONTH, Calendar.MONTH+1);
else
cal.set(Calendar.MONTH, Calendar.JANUARY);
int max=cal.getActualMaximum(Calendar.DAY_OF_MONTH);
for(int i=1;i<=max;i++){
Appendlist al=new Appendlist();
al.setUsers(u);
al.setMonthday(i);
al.setIsCurrent(true);
al.setAlDemo("ABSENT");

alDAO.save(al);

}

return true;
} catch (RuntimeException re) {
System.out.println("createCurrentSL failed");
re.printStackTrace();
return false;
}
}
调试之后:
public boolean createCurrentSL(Users u){
try {
String queryString = "update Appendlist set isCurrent=? where isCurrent='1' and uid=?";
Object[] objs=new Object[2];
objs[0]=false;
objs[1]=u.getUid();
getHibernateTemplate().bulkUpdate(queryString,objs);
getHibernateTemplate().flush();
Calendar cal=Calendar.getInstance();
if(cal.get(Calendar.MONTH


相关文档:

用 OPTIMIZE TABLE 优化 mysql 表


用 OPTIMIZE TABLE 优化 mysql 表
时间:2010-2-28来源:HaCMS开源社区 作者:gangzhong
REPAIR TABLE `table_name` 修复表 OPTIMIZE TABLE `table_name` 优化表 myisamchk table.MYI 修复索引 REPAIR TABLE 用于修复被破坏的表。 myisamchk TABLE.MYI 用于修复被破坏的索引文件。 OPTIMIZE TABLE 用于回收闲置的数据 ......

MySQL数据表类型(某公司的面试题)

MySQL的数据表类型很多,MySQL一共向用户提供了包括DBD、HEAP、ISAM、MERGE、MyIAS、InnoDB以及Gemeni这7种表。其中DBD、InnoDB属于事务安全类表,而其他属于事务非安全类表。
DBD
Berkeley DB(DBD)表是支持事务处理的表,由Sleepycat软件公司开发。它提供MySQL用户期待已久的功能--事务控制。事务控制在任何数据库系统中 ......

mysql alter 语句用法,添加、修改、删除字段等


 源地址: http://www.pcppc.cn/shujuku/mysql/shujuku_163919.html
 
 
您正在看的MySQL教程是:MySQL数据库学习笔记。
  MySQL数据库学习笔记 
(实验环境:Redhat9.0,MySQL3.23.54) 
纲要: 
一,连接MySQL 
二,MySQL管理与授权 
三,数据库简单操作 
四, ......

配置tomcat5.5 jndi 各种配置方式 分析总结(mysql)

准备工作:
安装tomcat5.5(注意这点)
安装mysql
拷贝mysql驱动到tomcat_home/common/lib下
新建一个web工程
在工程中加入index.jsp
<%@page import="java.util.*,javax.naming.*,java.sql.*,javax.sql.*" %>
<%@page contentType="text/html;charset=BIG5"%>
<%    ......

MySQL小技巧 1

1,忘记root密码,如果能还能进入mysql且还有mysql库的权限,那么就直接执行 update user set password=password(‘XXX’) where user=’root’ and host=’XX’; flush privileges; 即可.如果不能进入mysql,需要有mysql启动的权限,在启动mysql的时候加上--skip-grant-tables选项,此时进入mysql无需密码,再重复上述操 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号