很多时候,对于初学者来说,对于整合的时候很难下手,同时呢,初学者对一些src下包的含义也一头雾水,不知道这些包都是什么含义~~~在这里一步一步的教大家如何整合。
首先,在这里给大家讲解一下src包的定义:
com.action:这个包里面放的是一些action类,可以统一定义一个BaseAction,让所有action来继承,在baseaction中定义一些所有action都经常用的东西,如:注入serviceManager
com.common:放的是一些普通的类,比如说:上传类
com.dao:放的是数据访问层的接口,也就是针对数据库操作的一些接口
com.daoImpl:存放的是dao的实现类,在该包里,还可以定义一些继承daoImpl的类,为的是以后项目的可扩展性。
com.service:存放的是业务逻辑控制层类接口,该层会用到daoImpl包的方法类,专门做业务逻辑处理
com.serviceImpl:存放的是service包的实现类,在该包里面,还可以定义一个serviceManager类,对所有的Service类进行统一管理。这一层用来被action调用
com.model:存放的是一些实体模型类和与数据库表的映射文件,也就是JavaBean和*.hbm.xml,该包也有定义为entity的
HibernateSessionFactory:存放的是HibernateSessionFactory类,这个类是添加Hibernate支持的时候自动产生的。用来管理SesionFactory(其实,spring托管以后,这个类就不再使用了)
这些包的定义大同小异,不过道理都是一样的,至于包怎么定义,完全靠自己了,只是一定要数据访问层,业务逻辑层层次清晰。
当然,除了这些包,可能还有~~com.interceptor,com.filter等等,看自己怎么定义了!!
好了,包结构都知道了,我们开始整合吧~~~
首先,添加支持的顺序建议为:struts2--->Spring------->Hibernate
先添加struts2是没什么问题的,至于为什么先添加spring,而不是Hibernate呢?是因为,Hibernate的添加需要一些spring 的支持,当然这也不是绝对的,只是个建议而已。
第一:利用myeclipse添加对struts2支持
其实,在前面讲struts的时候,已经讲解过了如何添加支持,也就是三部曲(当然,也可以用myeclipse进行配置)
1,在src中添加struts.xml文件
2,对WEB-INF下的web.xml进行配置
3,添加相关jar包
至于,详细的配置请大家参考前面的struts的相关介绍
第二步:利用myeclipse添加对spring的支持
其实,也没什么特殊的~~
首先,添加spring的相关jar包,(也可用myeclipse自带的相关jar)
其次,点击项目右键--->myeclipse--->add spring capabilities...
接下来,一步一步配置就可以了。
会在src下产生一个applicationContext.xml文件,这个也就是bean的配置文件了
第三步:利用myeclipse添加Hibernate的支持
首先,导入相关jar包
其次,点击项目右键--->myeclipse--->add Hibernate capabilities...
这样呢,就会产生一个HibernateSessionFactroy.java类和hibernate.cfg.xml配置文件,
同时呢,还会在applicationContext.xml中多出以下代码:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>
这是将sessionFactory对spring进行托管,同时还可以通过配置对Transaction进行托管。这样这就是为什么先配置spring的原因了。
对于Hibernate对spring托管,将会在《Hibernate+spring 的整合》博文中进行讲解。
至此整个项目配置完成,可以启动部署了~~~
至于,项目运行时有时会出现jar包冲突和缺少的问题,这估计你就会自己解决了吧~~~
在web开发中一般采用5层架构模式:
表现层--------->业务逻辑层--------->数据访问层--------->持久层--------->数据库
在这里,把数据库也分为了一层。
表现层:也就是利用struts2 和前台的交互来实现的。(其实,我觉得把struts分到业务逻辑层也是可以的),所用到的包:com.action
业务逻辑层:相关类主要分布在com.service和com.serImpl包中,主要是利用dao层,实现业务逻辑的处理,被action用来调用。
数据访问层:相关类分布在com.dao和com.daoImpl包里,主要就是多数据的访问,如:对数据库的增删改查等操作,该层不包含任何业务逻辑。不包含用来被业务逻辑层调用
持久层:也就是Hibernate来实现了,主要是分布在HibernateSessionFactory包里的HibernateSessionFactory.java类,给来用来被数据访问层调用操作。
这时候,我们发现并没有spring的身影,其实,spring功能强大多了。它可以把daoImpl,serviceImpl,action等包里的类映射到applicationContext.xml中,进行管理。
这就是IoC(依赖注入或控制反转)了,其功能就是将数据访问层和业务逻辑层进行松耦合,不在通过new来产生对象,直接依赖注入来获取。
其实,spring还可以对将Hibernante以及事务进行托管,统一管理Hibernate,这样就减少了Hibernate的操作,spring还有令一个强大思想AOP面向切面。
详细的讲解请参考《Hibernate+Spring整合》。
好啦,今天就到此为止啦~~~,如有任何问题请留言!