strust
主要做servlet访问service,用spring的依赖注入标签
@Controller @Scope("prototype")
public class EmployeeManageAction {
@Controller 表示这个action是spring的控制层bean
@Scope("prototype")表示设置为每次访问实例化一个action对象,因为spring默认单例模式,防止其他action对象造成数据掺一起
Spring
可以对一切bean。例如hibernate的sessionFactory,action都进行管理,可以用依赖注解了
Hibernate
主要配置Employee.hbm.xml进行对象与表的映射,注意在spring配置文件bean.xml对hibernate配置的一些项
<propertyname="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=false
hibernate.format_sql=false
</value>
</property>
另外业务的定义是在spring的bean.xml中定义的,hibernate使用的是spring的对象
<bean id="txManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<propertyname="sessionFactory" ref="sessionFactory"/>
</bean>
<!--使用基于注解方式配置事务-->
<tx:annotation-driventransaction-manager="txManager"/>
@ResourceSessionFactory factory;
publicvoid delete(String... usernames) {
for(Stringusername : usernames){
黄标表示使用spring的事务session factory.getCurrentSession().delete(factory.getCurrentSession().load(Employee.class,username));
}
}
@Transactional(propagation=Propagation.NOT_SUPPORTED)//表示不使用事务
publicEmployee find(String username) {
return(Employee)factory.getCurrentSession().get(Employee.class, username);
}
该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默。具体可以查看传智播客的hibernate的注解ppt或者百度
@SuppressWarnings("unchecked")
@Transactional(propagation=Propagation.NOT_SUPPORTED)
publicList<Employee> list() {
returnfactory.getCurrentSession().createQuery("from Employee").list();
}