为了完善一个删除功能,期间遇到一些麻烦,希望记录下来,日后回头看会有所帮助,记一次成长,也是第一次写博客。
首先,页面方面使用的是dwz,我是初次接触而且刚开始工作不久,了解不是很深,但是一些功能的搭建是页面开发起来很方便,正如dwz介绍那样,省去开发人员写js的麻烦。
其次,本次项目使用的是SSH框架,我是新人,框架方面就此省略。网上有很多相关知识,框架的搭建,各部分的功能,业务逻辑配置等都很详细。
实现删除功能时,用的是底层自带的delete方法,所以相对于写新的del()底层delete让我作为了第一选择,但是关联表一开始没有配置,也不是我配置的,所以配置方面较晚发现,经验不足的表现,大局观不强。
下面附带一些知识吧,以备以后使用:
下边我们来看下cascade的取值:
Cascade属性的取值有:再说一个比较坑的地方:我看到说把lazy改为true,坑的地方来了,项目中的lazy只有false、proxy、no-proxy三种,顿时头脑发热感觉此路不通,心情很不爽……
Inverse是hibernate双向关系中的基本概念。inverse的真正作用就是指定由哪一方来维护之间的关联关系。当一方中指定了“inverse=false”(默认),那么那一方就有责任负责之间的关联关系。举个最简单的一对多父子关系。那么代码就写成:
父亲中的关系映射
{set name="children" lazy="true" inverse="true"}
{key column="parent_id"/}
{one-to-many class="test.Child"/}
{/set}
儿子中关系映射
Parent p = new Parent();
Child c = new Child();
c.setParent(p); //维护父子之间关系
p.getChildren().add(c);
session.save(p);
session.flush();
注意:{many-to-one}总是设成“inverse=false”的,而且这个属性在Mapping中是不存在的!
这样运行的下来的结果就是:
Hibernate: insert into parent (id) values (?)
Hibernate: insert into child (parent_id, id) values (?, ?)
那么假如c.setParent(p)注释掉,结果就是:
Hibernate: insert into parent (id) values (?)
DWZ开发文档:http://www.yq1012.com/dwz/
SSH综合知识:https://www.cnblogs.com/hww123/p/5852086.html(原文作者:一念成执着)
就这样吧,以后可能会总结的更多更精华,写博客的习惯也会慢慢养成!