JSF+HIbernate+Spring结合

我们在此用到的是spring的AOP、DAO、IOC,其他没有用到,而spring的DAO是建立在Hibernate基础之上的,具体的应用我们将在以下来讲解。
[b]1、添加spring,hibernate,jsf的jar[/b]
a、在eclipse的菜单MyEclipse中的菜单项中,选择Hibernate、JSF、Spring,,各自选择的版本是spring2.0,hibernate3.0,jsf1.1。
b、这样各自的jar包就自动的加入到项目中了。
c、各自自动加入的配置文件和java类分别为:
Spring: applicationContext.xml
Hibernate: hibernate.cfg.xml
JSF:faces-config.xml
[b]2、spring配置文件applicationContext.xml中的配置[/b]
a、数据源(一个连接池)
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
[color=red] 注:org.apache.common.dbcp.BasicDataSource是一个数据库连接池的类,可以用于数据库连接的池化。
也可以用org.springframework.jdbc.datasource.DriverManagerDataSource这个类来用于数据库连接[/color]

<property name="driverClassName">
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</property>
<property name="url">
<value>jdbc:microsoft:sqlserver://localhost:1433</value>
</property>
<property name="username">
<value>[color=red]数据库的用户名[/color]</value>
</property>
<property name="password">
<value>[color=red]数据库的密码[/color]</value>
</property>
</bean>
[b]b、Session工厂[/b]
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
[color=red]注:configLocation这个属性的值如下淡紫色,值为hibernate的配置文件,主要用到其中的ORM与表的映射配置文件。
mappingResources这个属性的值如下绿色,值为ORM与表的映射配置文件。

这两个属性为只能用其中的一个。[/color]
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<property name="mappingResources">
<list>
<value>com/synchrobit/synchrofms/pojo/TChargeItem.hbm.xml</value>
</list>
</property>

[color=red]注:hibernateProperties是为hibernate的properties文件[/color]<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
</props>
</property>
[color=red]注:用将dataSource的javaBean注入进去[/color]
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
[color=red]c、定义事务操作类[/color]
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>

[color=red]d、定义异常[/color]
<bean id="jdbcExceptionTranslator" class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
[color=red]e、定义hibernate模板[/color]
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
<property name="jdbcExceptionTranslator">
<ref bean="jdbcExceptionTranslator"/>
</property>
</bean>
[color=red]f、定义实现接口的DAO操作类[/color]
<bean id="chargeItemDAO" class="com.synchrobit.synchrofms.dao.implement.ChargeItemDAOImp">
<property name="hibernateTemplate">
<ref bean="hibernateTemplate"/>
</property>
</bean>
[color=red]g、定义实现接口的业务目标类[/color]
<bean id="chargeItemServiceTarget" class="com.synchrobit.synchrofms.bo.implement.ChargeItemServiceImp">
<property name="chargeItemDAO">
<ref local="chargeItemDAO"/>
</property>
</bean>
h、定义实现事务操作的业务代理类
[color=red]注:本类是一个代理工厂,根据里面的目标属性返回目标类,transactionAttributes属性用来控制事务操作方法[/color]
<bean id="chargeItemService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref local="transactionManager"/>
</property>
<property name="target">
<ref local="chargeItemServiceTarget"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="get*">PROPAGATION_REQUIRED</prop>
<prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
[b]3、 hibernate配置文件hibernate.cfg.xml中的配置[/b]
如果在2中第b中用的是configLocation这个属性的话,就需要配置hibernate.cfg.xml这个文件,如果不是的话就没有必要配置了,这里主要介绍的是三者的结合,而spirng实现了与hibernate的无缝结合,所以这里我们省略了。
[b]4、JavaServerFaces配置文件faces-config.xml中的配置[/b]
这里我只介绍jsf中的manageBean引用spirng中的JavaBean.
<faces-config>
<application>
<variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver
</variable-resolver>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>en</supported-locale>
<supported-locale>es</supported-locale>
</locale-config>
</application>
</faces-config>

[color=red]注:以上的org.springframework.web.jsf.DelegatingVariableResolver可以自动加载spring文件。[/color]

<managed-bean>
<managed-bean-name>userList</managed-bean-name>
<managed-bean-class>com.whatever.jsf.UserList
</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>userManager</property-name>
<value>#{userManager}</value>
</managed-property>
</managed-bean>

[color=red]注:#{usermanager}就是spring中申明的业务实现代理类。[/color]
[b]5、web.xml配置文件中的配置[/b]
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config.xml</param-value>
</context-param>
[color=red]注:Javax.faces.CONFIG.FILES是为web.xml设置寻找jsf配置文件的目录。[/color]
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>

[color=red]注:根据设置的加载文件设置jsf的监听[/color]
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
[color=red]注:contextConfigLocation是为web.xml设置寻找jsf配置文件的目录。[/color]
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

[color=red]注:加载spring配置文件的监听器[/color]
<servlet>
<servlet-name>SpringContextServlet</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

[color=red]注:加载spring配置文件的servlet,它和上面的spring 监听器,只能用一个,多用会有问题的。[/color]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值