SSH框里简单删除问题!案例里传一个ID,delete方法里居然就能直接删除user了。是怎么实现的,好神奇

2024-11-17 16:04:12
推荐回答(3个)
回答(1):

试想,hibernate封装了jdbc,而jdbc是通过普通的sql去操作数据表的。如果hibernate想要操作数据库,必然也要转化成相应的sql才能实现。有没有想过,在hibernate的配置中,为什么必须要告诉hibernate一个javabean对应的表是哪个,哪个属性又对应了这张表的主键。显然,当hibernate执行类似于delete、update、save等操作时,是根据传入参数的类,来查找对应要操作的表,然后根据id,来执行sql的。执行的真正sql,应该是delete from 表 where 对象.getId(),显然除了那个对象外,其它的信息都可以通过配置来得到,所以,只要你传入一个对象,而这个对象的主键对应属性不为空,就可以操作对应的数据。

而执行update和save时则需要注意,如果你只想更新一个字段,而你new了一个对象,然后给这个字段赋值,执行update,此时其它字段都会被清空。这显然不是你想要的。所以update的时候,通常是从数据库load一个对象,然后给这个load到的对象的某个属性重新赋值,再去update,才能达到更新某一字段的效果。

多想想hibernate的某一配置是为了什么来配置的,能帮助你理解hibernate的原理。

回答(2):

你删除这个链接是传到 struts 中 delete 其中delete重定向到user对象 其中它含有 id这个成员变量 所以就能删除了

回答(3):

因为id是这张表中唯一标识的啊。。所以传入一个id就能删除整条user数据啊