特大喜讯:今天阳光老师偶然讲了一点hibernate的映射关系,我很神奇的听懂了,天哪,这是从新中国成立以来从来没有的事情啊,这么复杂的逻辑关系我都能理清楚了,在讲叙项目之前,我先说说自己的理解
多对一于一对多是相互对应的,
在一个配置文件里写一对多,在对应的另外一个配置文件里就要写多对一,
一对多的
<!-- employees 我与Employee的一对多 -->
<set name="employees">
<key column="departmentId"></key>
<one-to-many class="Employee"/>
</set>
多对一
!-- department 我与Department的多对一 -->
<many-to-one name="department" column="departmentId" class="Department"></many-to-one>
先从多对一看起,name属性 表示自身字段,column表示映射到表中该用什么字段,但这个映射到表中的字段是依赖另外一张表的,因为只有department这张表里面定义的id属性才有意义,员工表里面随便的搞一个department id有什么意义呢,如果要保持同步的更新,这还是需要输入多条sql语句,一点都不方便
所以只有相互关联起来才会提高效率,
多对多呢,很不幸,还是不懂,尤其是中间表的概念,我估计下次哪个老师点一点就通了,阳光老师说的好,不会的东西不要强迫自己立即学会,但一定要有学会的信心。
一:正向工程与反向工程(不是逆向工程)
正向工程就是从客户需求开始分析,按照汤阳光老师的话说就是,先分析客户需要什么,也就是做什么,然后再来分析怎么做,就在分析客户需求层的怎么做的同时就得出业务层该做什么,然后又在分析业务层怎么做的时候得到DAO层做什么,然后一路搞到数据库,这就是正向工程。
逆向工程正好相反,先建立底层数据库,然后DAO层,然后业务层,然后是表示层。
二:设计dao层
1,首先建立三个包
1)cn.itcast.oa.dao
cn.itcast.oa.dao.DepartmentDao.java
cn.itcast.oa.dao.RoleDao.java
2)cn.itcast.oa.dao.base
cn.itcast.oa.dao.base.BaseDao.java
cn.itcast.oa.dao.base.DaoImplBase.java
3)cn.itcast.oa.dao.impl
cn.itcast.oa.dao.impl.DepartmentDaoImpl.java
cn.itcast.oa.dao.impl.RoleDaoImpl.java
建立这三个包里面的6个类,看起来很简单,其实一点都不简单,
DepartmentDao和RoleDao是两个继承自BaseDao的接口,然后DepartmentDaoImpl和RoleDaoImpl分别是其实现,但很神奇的就是DepartmentDaoImpl是继承DaoBaseImpl实现DepartmentDao,所以DaoBaseImpl很自然的就是BaseDao的实现了。
学习总结:今天算是正式接触到一点软件工程吧,才知道从底层开始每一点东西都是建立在严密的逻辑思维上面的。