我是使用S2SH整合开发项目.
为什么我在删除一条数据的时候,
方法体的代码要写成:
this.getHibernateTemplate().delete(this.getHibernateTemplate().load(Role.class,roleId));为什么要this.getHibernateTemplate().load(Role.class,roleId)
为什么首先要对数据进行加载?
这个加载具体做了一些什么操作,有什么意义 .?
为什么要加载以后才能够对数据进行删除.?再比如说我要查找某条特定的用户信息
则要写成
public User findUser(int userId) 
{
return (User)this.getHibernateTemplate().load(User.class, userId);
}
想知道它其中的原理,整体是怎么运行的... 

解决方案 »

  1.   

    因为是对加载的具体类进行删除啊,
    你用的是void org.springframework.orm.hibernate3.HibernateTemplate.delete(Object entity) throws DataAccessException
      

  2.   

    其实删除不需要先load..
    this.getHibernateTemplate().delete(new Role(roleId));
      

  3.   

    LZ这两个问题是一起的,首先回答第2个
    (User)this.getHibernateTemplate().load(User.class, userId)
    这样写是因为你 使用了hibernate模板,并使用延迟加载取得userId对应的记录,他会返回一个po(持久类)对象User,
    而User.class就是为了告诉hibernate组装po。
    第一个问题
    this.getHibernateTemplate().delete(this.getHibernateTemplate().load(Role.class,roleId));
    delete里面就是为了得到这个Role这条记录,然后删除这个持久类信息。
    这是API上面的方法,里面还有删除的方式,
    比如楼上this.getHibernateTemplate().delete(new Role(roleId));
    或是你自己写一句sql语句,利用getHibernateTemplate()执行也是可以的
      

  4.   

    你们对SSH的层次一般怎么划分啊,比如是对每个实体类都建一个接口和实现方法吗?