项目hibernate版本为5.1.0,spring版本为4.2.5,struts2版本为2.3.24,整个项目通过maven管理。
hibernate封装了JDBC,JTA,JNDI,hibernate提供对象标识符,通过在XML中配置,<id name="属性" type="属性类别"><column name="字段" length=“长度”/n><generator class="assign"/></id>(pojo对应的属性)(标识符生成方式,assign:由程序指定,increment:由hibernate自动创建,作为代理主键,sequence:有数据库自动的序列化生成,适合oracle),通过ssh框架管理项目,spring(ioc控制反转,将程序的具体实现、控制权交给容器,减少了耦合,而不是由应用程序负责)面向切面技术,ioc使用了反射的机制,效率和会有部分降低(反射效率低的原因:反射涉及到将解析字节码,将内存中的对象进行解析,包含动态类型,JVM无法优化,,在一般程序中不用关系,大数据中可能是性能瓶颈所在),降低了对象之间的依赖关系,减少耦合,通过在spring XML中注入具体的实现,做到面向接口编程。面向对象的区别在于,避免多层继承,将业务从切面切开,定义从左到右的关系,写成service,对应的DAO执行具体操作,service和业务层对应。
在ssh中,action表示动作做应用层,service对应业务层,dao对应具体数据操作层,将service与dao层分离,实现业务与数据操作分离。
getHibernateTemplate与getSession(createQuery或者createSqlQuery),前者由spring已经封装了基本的方法,可以直接调用,后者hibernate直接提供的接口通过hql或者sql语句进行操作。propagation transaction配置检查有没有transaction,如果没有则创建新的transaction,主要用来配置当前需要执行的方法。