这个是个人的一些看法,随着时间的关系,会进行修改,如果有什么错误也请提出!
首先确认一下准则,就是预定大于配置,尽量减少配置文件的编写,加快开发效率
其实说一下使用的框架的版本,hibernate3.5以上,spring 2.5.5以上,因为用到的注解,
本例使用的hibernate为3.5.5,spring 3.0.4,数据库使用mysql
这里只贴出关键部分的配置,其他细节自己补充
<!--因为spring要使用注解,所以添加如下代码--> <context:component-scan base-package="com.公司名.项目名" /> <!--配置hibernate SessionFactory属性--> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!--这里设定了数据库与java类中的映射规则,javabean按java规范定义,数据库按加下划线的形式定义--> <property name="namingStrategy"> <bean class="org.hibernate.cfg.ImprovedNamingStrategy" /> </property> <property name="hibernateProperties"> <props> <!--数据库方言--> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop> <!--是否显示执行的sql语句--> <prop key="hibernate.show_sql">false</prop> <!--同步Javabean与数据库表结构--> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> <property name="packagesToScan" value="com.公司名.项目名..*" /> </bean> <!--配置事务--> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="get*" read-only="true" /> <tx:method name="find*" read-only="true" /> <tx:method name="*" /> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut id="interceptorPointCuts" expression="execution(* com.公司名.项目名..service.*.*(..))" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="interceptorPointCuts" /> </aop:config>
这样再加上一些附加的配置,比如DataSource等配置就搭好基本架构了
之后建议的包名结构如下:
DAO层:com.公司名.项目名.模块名.dao
Service层:com.公司名.项目名.模块名.service
Action层:com.公司名.项目名.模块名.action
Pojo层:com.公司名.项目名.模块名.pojo
自己写的工具类层:com.公司名.项目名.模块名.utils
然后说一下开发的流程,
1.先确定实体,以及实体与实体的关系,建立好模型,个人倾向于hibernate中推荐的开发流程,就是先写javabean以及配置信息,之后生成数据库
具体hibernate开发事项请参考另一篇文章
http://finallygo.iteye.com/blog/1040377
2.之后写DAO:在DAO的类上加@Repository注解,表示这个组件是持久化的
查询的时候优先使用Criteria配合Example的模式,因为这样便于不容易出错,且便于修改,如果复杂一些的用HQL,再复杂的用SQL
3.再写Service:在Service的类上加@Service注解,表示这个组件是业务层的,同时对于依赖的组件(DAO或者其他Service)添加@Resource注解
@Resource注解默认以ByName的形式注入,如果找不到就ByType,如果还是找不到就会抛异常,说至少要有一个满足条件的组件被注入
4.最后写Action,这里涉及到使用的MVC框架,以及整合的方式了,暂时不讨论
另外暂时把我临时配置的一个文件上传吧