(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