博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring整合Hibernate与Struts
阅读量:4984 次
发布时间:2019-06-12

本文共 6244 字,大约阅读时间需要 20 分钟。

整合S2SH

一、导入jar包

Spring jar包

Hibernate jar包

Struts2 jar包

 

以上就是整合需要的所有jar包,当然其中有重复的包,(对比之后去掉版本低的就可以了,还有就是在整合Spring4和hibernate时我们配置的hibernate最多只能配置到hibernate4[现在多数都用的是hibernate5,所以通常都会报一个错误:org/hibernate/engine/transaction/spi/TransactionContext:碰上这个错误的话不要慌张,下载hibernate4.0版本的hibernate-core-4.3.8.Finarror替换掉对应的的高版本,问题就解决了。])。

最后别忘了最重要常用的工具类包:数据驱动包是绝对不能忘记的!

二、配置spring的XML文件

1.配置数据源

建立db.properties的资源文件,配置数据源的连接信息。

在Spring配置文件中导入db.properties <context:property-placehoder/>
配置实体化c3p0的数据源ComboPooledDataSource(测试数据源配置成功)

 

2.配置Hibernate的SessionFactory——通过Spring提供的LocalSessionFactoryBean来配置

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">

<!--配置数据源属性-->
<property name="dataSource" ref="dataSource"></property>
<!--配置Hibernate配置文件的位置-->
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
<!--配置Hibernate映射文件的位置,可以使用通配符-->
<property name="mappingLocation" value="classpath:com/itnba/entities/*.hbm.xml"></property>
</bean>

 

3.配置Spring的声明式事务

配置事务管理器 -- HibernateTransactionManager

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
配置事务属性 -- 导入tx命名空间
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
配置事务切点,并把切点和事务属性关联起来。--导入aop命名空间
<aop:config>
<aop:pointcut expression="execution(* com.itnba.service.*.*(..))" id="pointCut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/>
</aop:config>

 

以上就配置完成了:(下面是完整的)

 

以上示例就把hibernate整合完了,下面整合struts2:(整合struts实际上就是让spring来管理其控制层,所以实例化action类是必须的:[在上面的bean中已经通过自动扫描了],之前加载Spring的IoC容器是用代码ApplicationContext context = new ClasspathXml......("beans.xml");加载的。在Web中加载需要放在应用程序启动的时候加载,这可以使用监听器来实现。)

S2SH_Demo
index.jsp
contextConfigLocation
classpath:beans.xml
org.springframework.web.context.ContextLoaderListener
struts
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts
/*
openSessionInViewFilter
org.springframework.orm.hibernate4.support.OpenSessionInViewFilter
singleSession
true
openSessionInViewFilter
*.action

 

***********************************************************************************

以下是通过Spring的注解来注入和管理类

Dao类

@Repository("baseDao")//(实现dao访问)(自动扫描生成bean)@SuppressWarnings("all")public class BaseDaOImpl
implements BaseDao
{ @Autowired private SessionFactory sessionFactory; public SessionFactory getSessionFactory() { return sessionFactory; } public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } private Session getCurrentSession() { return sessionFactory.getCurrentSession(); }

 

Service层

@Service("menuService")public class MenuServiceImp implements MenuService {        @Resource    private BaseDao
baseDao; @Override public void saveOrUpdate(SysMenu sysMenu) { baseDao.saveOrUpdate(sysMenu); }

 

Entity实体层

@Component//@Component 是一个泛化的概念,仅仅表示一个组件 (Bean) ,可以作用在任何层次。public class SysMenu implements java.io.Serializable {    private Integer id;    private String authDescription;    private String authName;    private String authPath;    private Date gmtCreate;    private Date gmtModified;    private String iconCls;    private Integer parentId;    private String state;    private Set
sysRoleidMenuids = new HashSet
(); public SysMenu() { }

控制层

@Controller//@Constroller 通常作用在控制层,但是目前该功能与 @Component 相同。public class PowerAction extends ActionSupport {    private String roleId;//获取角色id(用来判断给角色授予权限时,已经拥有的权限)

通过在类上使用 @Repository、@Component、@Service 和 @Constroller 注解,Spring 会自动创建相应的 BeanDefinition 对象,并注册到 ApplicationContext 中。这些类就成了 Spring 受管组件。

转载于:https://www.cnblogs.com/claricre/p/6686231.html

你可能感兴趣的文章