×

attachdirty c ate

attachdirty(关SSH框架中hibernate生成的attachdirty方法的问题···)

admin admin 发表于2022-09-03 14:12:08 浏览94 评论0

抢沙发发表评论

本文目录

关SSH框架中hibernate生成的attachdirty方法的问题···


首先,你写的是synchronized 方法,t1执行run()方法,没有执行完成,t2永远也不能调用这个方法。
其次, this.wait(); 这行代码使得程序永远的停在了这里,不会继续执行,因为没有条件来唤醒t1这个线程,所以程序就一直在等待,就停在这一行了。所以没有任何的输出。
最后,类名大写,没用的comments删除.
GOOD LUCK!
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
vaela

用hibernate自动生成的attachDirty方法执行update为什么最后执行的是save


Hibernate的update和saveOrUpdate方法都是用于对跨Session的PO进行状态管理,它们的区别在于对PO采取何种策略。顾名思义,saveOrUpdate方法基本上就是合成了save和update方法,如果PO对象已经在session中持久化了,被改动后再在session中执行saveOrUpdate则会执行update方法(update);而如果PO对象是一个新创建的对象,没有持久化标识(identifier)属性,则会对其调用save方法(insert)。你检查一下你要update的PO的主键值是不是已经在记录中存在,如果已经存在,应该会执行update的。

关于配置spring声明式事物的问题


web.xml中是否进行了如下配置
《!-- 一个监听,ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext的配置信息 --》
《listener》
《listener-class》
org.springframework.web.context.ContextLoaderListener
《/listener-class》
《/listener》

《!-- 配置寻找applicationContext文件的路径 --》
《context-param》
《param-name》contextConfigLocation《/param-name》
《param-value》
/WEB-INF/classes/applicationContext.xml
《/param-value》
《/context-param》
-ate

请问hibernate中merge()、attachDirty()、attachClean()这三个方法是做什么的怎么用


**
* 将传入的detached状态的对象的属性复制到持久化对象中,并返回该持久化对象
* 如果该session中没有关联的持久化对象,加载一个,如果传入对象未保存,保存一个副本并作为持久对象返回,传入对象依然保持detached状态。
* @see com.CodeDepts
*/
public CodeDepts merge(CodeDepts detachedInstance) {
log.debug(“merging CodeDepts instance“);
try {
CodeDepts result = (CodeDepts) getSession()
.merge(detachedInstance);
log.debug(“merge successful“);
return result;
} catch (RuntimeException re) {
log.error(“merge failed“, re);
throw re;
}
}
/**
* 将传入的对象持久化并保存。
* 如果对象未保存(Transient状态),调用save方法保存。如果对象已保存(Detached状态),调用update方法将对象与Session重新关联。
* @see com.CodeDepts
*/
public void attachDirty(CodeDepts instance) {
log.debug(“attaching dirty CodeDepts instance“);
try {
getSession().saveOrUpdate(instance);
log.debug(“attach successful“);
} catch (RuntimeException re) {
log.error(“attach failed“, re);
throw re;
}
}
/**
* 将传入的对象状态设置为Transient状态
* @see com.CodeDepts
*/
public void attachClean(CodeDepts instance) {
log.debug(“attaching clean CodeDepts instance“);
try {
getSession().lock(instance, LockMode.NONE);
log.debug(“attach successful“);
} catch (RuntimeException re) {
log.error(“attach failed“, re);
throw re;
}
}
-c

java代码,谁能帮我详细解释一下这个删除数据库里某条信息的代码,具体每一句是什么意思


数据库删除分为逻辑删除和物理删除,逻辑删除就是对要要删除的数据打上一个删除标记,在逻辑上是数据是被删除的,但数据本身依然存在!而物理删除则是把数据从介质上彻底删除掉。这里做的是逻辑删除 hangban.setDel(“yes“); 通过hangbanDAO.attachDirty(hangban);这个区更新数据库
-ate

hibernate中更新,数据库未同步更新


楼主:
你的对象映射文件中的date属性设置了type属性吗(type=“date“)?没有的话加上试试。
《property name=“date“ type=“date“ column=“d_date“》《/property》
-c

hibernate自动生成的dao怎么用啊,这里面也没写Transaction trans = session.beginTransaction();求教


hibernate自动生成的dao一般都是不全的,而且版本不一样生成的也是有好多差异,楼主生成的这个和我的就有好多不一样,既然这样那可以自己加上去丰富它的Dao,这里我就不多说了。另外至于那个开启事物的代码,没有也只能自己写了,我想它的想法可能是如果自己生成的话可能会造成资源浪费也就没有生成。就楼主生成的这个Dao类来说,我就举个添加功能的例子,即,使用生成的attachDirty()方法。
Transaction trans = session.beginTransaction();
AdminHome adminhome=new AdminHome();
adminhome.attachDirty(admin);//admin是我自己取的名,就是需要保存的类对象
trans.commit();
-ate

来个java高手,注释下面这段代码,dao文件里面复制来的


public void attachDirty(Bm instance)
{
//记录日志,没什么作用,主要用于出现错误时进行排查
log.debug(“attaching dirty TCatelog instance“);
try
{
//得到Hibernate的模板,进行保存或者更新实例(如果该对象存在就更新,不存在就插入数据库)
getHibernateTemplate().saveOrUpdate(instance);
//记录日志,没什么作用,主要用于出现错误时进行排查
log.debug(“attach successful“);
} catch (RuntimeException re)
{
//记录日志,没什么作用,主要用于出现错误时进行排查
log.error(“attach failed“, re);
throw re;
}
}
-c

dao.attachDirty 和dao.save 有什么区别啊


Dao提供的merge,attachDirty和 attachClean的使用 void attachDirty(TTable1 instance)方法 将传入的对象持久化并保存. 如果对象未保存(Transient状态),调用save方法
-ate