(5)服务层(事务管理器)
雇员管理服务
package com.journey.service.interfaces;
import java.util.List;
import com.journey.pojo.Employee;
public interface IEmployeeService {
public void addEmp(Employee emp);
public void delEmp(java.io.Serializable id);
public void updEmp(Employee emp);
public List<Employee> showEmps();
}
package com.journey.service.impl;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.transaction.annotation.Transactional;
import com.journey.pojo.Employee;
import com.journey.service.interfaces.IEmployeeService;
public class EmployeeServiceImpl implements IEmployeeService {
//提供get和set方法,让Spring注入会话工厂
private SessionFactory sessionFactory;
//配置Transactional让Spring的事务管理器接管该service事务
@Transactional
@Override
public void addEmp(Employee emp) {
sessionFactory.getCurrentSession().save(emp);
}
@Override
public void delEmp(Serializable id) {
// TODO Auto-generated method stub
}
@Override
public void updEmp(Employee emp) {
// TODO Auto-generated method stub
}
@Override
public List<Employee> showEmps() {
// TODO Auto-generated method stub
return null;
}
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
}
回话工厂有Spring接管
事务管理由Spring接管
配置applicationContext.xml文件
<!-- ... -->
<!-- 配置一个EmployeeServices-->
<bean id="employeeService" class="com.journey.service.impl.EmployeeServiceImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 配置事务管理器,统一管理事务-->
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 启用事务注解 -->
<tx:annotation-driven transaction-manager="txManager"/>
(6)配置二级缓存
applicationContext.xml
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.OracleDialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=false
hibernate.format_sql=false
<!-- 配置二级缓存 -->
hibernate.cache.use_second_level_cache=true
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
hibernate.generate_statistics=true
</value>
</property>
usage说明了缓存的策略,region指定缓存的区域名
EmployeeService.xml
<hibernate-mapping package="com.journey.pojo">
<class name="Employee" table="employee0516">
<cache usage="read-write"/>
<!-- id用与指定主键属性 -->
ehcache.xml配置
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
/>
<!--defaultCache节点为缺省的缓存策略
maxElementsInMemory 内存中最大允许存在的对象数量
eternal 设置缓存中的对象是否永远不过期
overflowToDisk 把溢出的对象存放到硬盘上
timeToIdleSeconds 指定缓存对象空闲多长时间就过期,过期的对象会被清除掉
timeToLiveSeconds 指定缓存对象总的存活时间
diskPersistent 当jvm结束是是否持久化对象
diskExpiryThreadIntervalSeconds 指定专门用于清除过期对象的监听线程的轮询时间-->
整合Strust2