hibernate中删除持久化对象两种方法为什么结果不一样?

先说一下结构吧。。我有一个article实体类,和一个info实体类,这两个类配置了一对一关联的代码如下:

 <hibernate-mapping>
    <class name="cn.zzzzbw.blog.domain.Article" table="article">
        <id name="id" column="id">
            <generator class="increment"/>
        </id>

        <property name="title" column="title" type="java.lang.String" not-null="true"/>

        <property name="content" column="content" type="java.lang.String" not-null="true"/>

        <property name="mdStorage" column="mdStorage" type="java.lang.String"/>

        <property name="category_id" column="category_id" type="int"/>

        <many-to-one name="info" column="info_id" class="cn.zzzzbw.blog.domain.Info" cascade="all" unique="true"
                     lazy="false"/>

        <many-to-one name="archives" column="archives_id"
                     class="cn.zzzzbw.blog.domain.Archives"
                     cascade="all" lazy="false">
        </many-to-one>
    </class>

</hibernate-mapping>




<hibernate-mapping>
    <class name="cn.zzzzbw.blog.domain.Info" table="info">
        <id name="id" column="id">
            <generator class="increment"/>
        </id>

        <property name="display" column="display" type="boolean"/>

        <property name="click" column="click" type="int"/>

        <property name="createDay" column="createDay" type="java.lang.String" length="128"/>

        <property name="editDay" column="editDay" type="java.lang.String" length="128"/>

        <one-to-one name="article" class="cn.zzzzbw.blog.domain.Article" property-ref="info"/>
    </class>

</hibernate-mapping>

然后我的dao实现类是继承于HibernateDaoSupport的,当我要删除一个持久化对象时,我用:

     public void delete(Article article) {
        this.getHibernateTemplate().delete(article);
    }

删除的时候,只会删除数据库中的对应的article,与之关联的info不会被删除,然而当我用

     public void delete(int id) {
        Article sqlArticle = this.getHibernateTemplate().get(Article.class, id);
        this.getHibernateTemplate().delete(sqlArticle);
    }

这样删除的时候,就可以同时删除了和这个article关联的info,这是为什么啊?

级联删除...同时删除有映射关系表中的数据

级联删除是:删除一个对象的同时也会删除所有跟该对象有关联关系的对象。
第一种 直接删除一个对象,没有级联;
第二种 先根据id查出该对象,然后删除,应用了级联删除;
至于有没有配置级联删除,应该去看 HibernateDaoSupport 内部实现。