好吧,我到现在又想明白了点,订单似乎是个业务逻辑,插入时候基本不能直接被SPRING装在好吧,只有在业务层先实现了插入日程才能得到日程对象的OID然后再插入订单。
但是订单对象也不是白做的,在取出订单时候应该可以一下装配好这个对象吧。尝试中。。晚些时候来再提问或者结贴。
才学完SSH2整合2天,不专业地方请大家多指导!!!
但是订单对象也不是白做的,在取出订单时候应该可以一下装配好这个对象吧。尝试中。。晚些时候来再提问或者结贴。
才学完SSH2整合2天,不专业地方请大家多指导!!!
解决方案 »
- 现在还刚刚开始学Java。遇到了一个问题。。老师在课上说的是指JButton但是我认为指的是ActionListener???有谁能帮我理解下吗??求大神们帮助
- request数据丢失问题,挺怪的!!
- 崩溃了。blazeds 官方例子使用出错。
- Hibernate多值查询后使用Spring处理结果的问题
- vtd-xml中遇到的一个问题
- 不在服务器上是否可以导出SQL Server数据表数据?
- Hibernate入门级的问题
- struts新手做javabean时出错,哪位大侠帮帮忙~~急等~!~!
- 请教各位前辈!
- 巨菜问题:java文件在编译成class文件后用java.exe解释执行的时候遇到问题,请帮忙解决?在线等待!!!
- 请教高手!按标题排序,对数据进行校验,然后批量添加
- Hibernate问题
帮你找了两个:
http://ryxxlong.iteye.com/blog/626416
http://www.blogjava.net/wujun/archive/2006/04/08/39956.html
小组一个用户可以在多个小组,一个小组可以有多个用户
===============================================
数据库有users\user_group\groups三个表操作会进行如下:
删除users表用户,同时去除user_group表和用户相关的记录,但是要能保留groups表对应组织;
删除groups表组织,同时去除user_group表和组织相关的记录,但是要能保留users表用户;
===============================================
这个我觉得是一个典型的多对多。现在我迷茫的一点是这样的:
我可以自己写2个hbm,实现了中间表自动生成,但是在操作时候我自己只能实现部分操作,就是这个地方费解了。代码如下:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping> <class name="bean.Group" table="groups">
<id name="id" column="id" type="long">
<generator class="increment"></generator>
</id>
<property name="groupName" column="group_name" type="string"></property>
<set name="users" table="user_group" cascade="save-update">
<key column="group_id"></key>
<many-to-many class="bean.User" column="user_id"></many-to-many>
</set>
</class></hibernate-mapping><?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping> <class name="bean.User" table="users">
<id name="id" column="id" type="long">
<generator class="increment"></generator>
</id>
<property name="username" column="username" type="string"></property>
<property name="password" column="password" type="string"></property>
<set name="groups" table="user_group" cascade="save-update">
<key column="user_id"></key>
<many-to-many class="bean.Group" column="group_id"></many-to-many>
</set>
</class></hibernate-mapping>
//添加数据:正确实现添加内容
User user1 = new User();
user1.setUsername("zhangsan");
user1.setPassword("123456");
Group group1 = new Group();
group1.setGroupName("组一");
user1.getGroups().add(group1);
group1.getUsers().add(user1); UserDAO userDAO = new UserDAOImpl();
userDAO.save(user1); //测试二:删除用户,可以实现删除中间表记录
// UserDAO userDAO = new UserDAOImpl();
// User user1 = userDAO.findUserById(1);
// userDAO.removeUser(user1);//测试三:删除组,不能删除组,也不会删除中间表相关记录
// GroupDAO groupDAO = new GroupDAOImpl();
// Group group1 = groupDAO.findGroupById(1);
//
// System.out.println(group1);
//
// groupDAO.removeGroup(group1);现在我的难点是在实际开发中这类问题是怎么处理的?
因为我也可以不用hbm去管理这个关系,而只是管理每个对应模型的添删改查,然后在业务层去自己调用三个不同的dao去完成功能需求。
这样做得话对我还很轻松,但是总觉得这样是不是有违hibernate的学习宗旨?
另外6楼说有违hibernate的学习宗旨,这个真心没有。说真的,项目中是怎么简单快捷怎么来,如果你用hibernate反而比不用它更快更好,那你为什么非要用它呢,就因为你在项目中用了hibernate吗?工具是为了提高效率。就好比小明和小张两家相距10米元,彼此都有车,难道说就因为有车,所以必须开车去吗?
官方推荐:拆分成2个一对多,大多数时间需要再连接表中添加额外的信息。而这个提示页也正是我困惑的问题。
至此,前面的问题也一样解决了!
Do not use exotic association mappings:
Practical test cases for real many-to-many associations are rare. Most of the time you need additional information stored in the "link table". In this case, it is much better to use two one-to-many associations to an intermediate link class. In fact, most associations are one-to-many and many-to-one. For this reason, you should proceed cautiously when using any other association style.
===========================================================
之所以选择这个是因为才学习完SSH2整合,如果理不清这边的处理,写不好hbm文件,下步骤也没法把hbm文件作为资源放到spring配置文件中。我这半年来再寻找一种解决方案。之前的一年多时间里,自己写过不少可以说是几代代码。
从开始的写前段HTML+CSS+JS开始
到后来的维护中软、U8数据库SQL SERVER2000
再到后来写ASP的后台,代码和语言混合的那种(到后期简直牵一发动全身,我自己写的自己都没法修改了)
再后来看了部分PHP视频后,开始用简单的MVC模式写,但是太零散了(也许作为一门成熟的语言有其解决方案,只是我没坚持到吧)。
再后来因为实行手机客户端,自己照葫芦画瓢的写了个android客户端给单位用(在其中的视频结实了Java这门语言),由于android客户端的存在,自己的工作范围再次扩大,多种语言的维护作为一个人来说很大程度上是我的负担了,同时自己也明白自己最擅长的是处理那块内容了。(前端不是我擅长的,因为自己属于完美主义的,在前端永远自己现在做得都无法满足自己想在想的,所以放弃;数据库那边说句不好听的话,万变不离其宗,也就那么多东西;所以最后就是业务块了)所以这半年在看Java教程中,我进一步定位了自己的位置,其它方面尽量用成熟的东西代替自己去做,在看完SSH2整合后可以说是兴奋的,因为终于找到自己重点了。