日期:2014-05-20  浏览次数:20772 次

spring+hibernate+struts +SQL2005 数据库频繁死锁。能解决再追加100分
现在有个系统,spring+hibernate+struts +SQL2005 的数据库(开始是SQL2000)只要执行update 后 查询就死锁,数据库死了,要把tomcat停了才能继续运行。

现在发现不了原因。。。。郁闷的 看不到摸不着的。。。。

不过怀疑他的配置文件 有问题:原来工程里面是有2个配置文件的:hibernate.cfg.xml 和 hibernate1.cfg.xml (多个1)
调用的方式:
protected HibernateOperations hibernateImpl = HibernateManagerFactory
.getInstance("hibernate.cfg.xml");
或者
private static TServiceSalvedFromServicTypeDao dao;
public static TServiceSalvedFromServicTypeDao getInstance() {

if (dao == null) {
dao = new TServiceSalvedFromServicTypeDao();
dao.setProps("hibernate.cfg.xml");
}
return dao;
}

// 建立数据库连接
public void getConnect(TServiceSalvedFromServicTypeDao obj) {
try {
jdbc = new JDBCManager(obj.getProps());
conn = jdbc.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}

现在 把2个配置文件合并到个 hibernate.cfg.xml 里面 ,以前调用 hibernate1.cfg.xml的 全部replace  
hibernate.cfg.xml。 结果死的更频繁。



原 配置文件内容:
<mapping class="com.dingtian.ccsa.back.salvation.minzheng.medicare.bo.TMzme" />
<mapping resource="com/dingtian/ccsa/back/salvation/stat/bo/TService.hbm.xml" />
有2中形势的配置方式。我 一直怀疑 2中配置方式放在一个工程里面可以么?而且还放一个hibernate.cfg.xml配置文件中


<mapping class="com.dingtian.ccsa.back.salvation.minzheng.medicare.bo.TMzme" />
这种配置形式就是 (直接写类里面的):  
@Column(name = "salvedtime", unique = false, nullable = true, insertable = true, updatable = true, length = 50)
public String getSalvedtime() {
return salvedtime;
}

public void setSalvedtime(String salvedtime) {
this.salvedtime = salvedtime;
}

<mapping resource="com/dingtian/ccsa/back/salvation/stat/bo/TService.hbm.xml" />
这种是 (写在xml文件中的)
  <id
  name="registerNo"
  type="java.lang.String"
  column="REGISTER_NO"
  unsaved-value="undefined"
  >


数据库连接 是配置在tamcat 中的,在tomcat/conf文件下 server.xml文件 
<Resource name = "jdbc/xwjzdb" 
type = "javax.sql.DataSource" 
driverClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
url = "jdbc:sqlserver://192.168.8.122:1433;databaseName=db0706"
username = "sa"
password = "666666"
maxWait = "4000"
maxActive = "200"
maxIdle = "30" />


那位 高人帮小弟看看 ,会是什么问题 ,或者有出现过 类似这种情况的请告诉下 ,或者就不是配置文件问题 是其他问题的?

现在 只要更新数据库 然后自己刷新页面查询就会死锁。死锁以后 必须从启动tomcat 然后数据自己会回滚


  



------解决方案--------------------
从现象分析,是事务未提交,一直挂着
------解决方案--------------------
如果配置文件配置了事务,请检查事务配置
如果配置文件未配置事务,请在数据库操作完成后提交,并释放相关资源,如果session,ResultSet等
------解决方案--------------------
帮顶~!
------解决方案--------------------
探讨
我搜索了 所以的xml文件 没有发现事务的相关配置。估计是默认。。。。

------解决方案--------------------
探讨
java 代码也没有显示 开启事务

------解决方案--------------------
手动提交

代码忘了的话

上GOOGLE搜搜
------解决方案--------------------
public void bulkUpdate() {
 Session session=this.getHibernateTemplate().getSessionFactory().openSession();