Java代码 copy
1.<?xml version="1.0" encoding="UTF-8"?>
2.<beans xmlns="http://www.springframework.org/schema/beans"
3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
4. xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
5. xsi:schemaLocation="http://www.springframework.org/schema/beans
6. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
7. http://www.springframework.org/schema/context
8. http://www.springframework.org/schema/context/spring-context-2.5.xsd
9. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
10. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
11.
12. <!-- 将bean交由spring管理可以 用<bean></bean>和扫描加注 -->
13. <!--
14. 扫描该包及该包下的子包
15. -->
16. <context:component-scan base-package="com.yss"></context:component-scan>
17.
18.
19. <!-- 集成hibernate sessionFactory单例模式 线程安全 创建耗内存-->
20. <!-- 将hibernate的事务也交由spring管理 -->
21. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
22. destroy-method="close">
23. <property name="driverClass" value="org.gjt.mm.mysql.Driver" />
24. <property name="jdbcUrl"
25. value="jdbc:mysql://localhost:3306/ssh?useUnicode=true&characterEncoding=UTF-8" />
26. <property name="user" value="root" />
27. <property name="password" value="root" />
28. <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
29. <property name="initialPoolSize" value="1" />
30. <!--连接池中保留的最小连接数。-->
31. <property name="minPoolSize" value="1" />
32. <!--连接池中保留的最大连接数。Default: 15 -->
33. <property name="maxPoolSize" value="300" />
34. <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
35. <property name="maxIdleTime" value="60" />
36. <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
37. <property name="acquireIncrement" value="5" />
38. <!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
39. <property name="idleConnectionTestPeriod" value="60" />
40. </bean>
41.
42. <bean id="sessionFactory"
43. class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
44. <property name="dataSource" ref="dataSource" />
45. <property name="mappingResources"><!-- 放置hibernate的配置文件 -->
46. <list>
47. <value>com/yss/bean/Employee.hbm.xml</value>
48. </list>
49. </property>
50. <property name="hibernateProperties">
51. <value>
52. hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
53. hibernate.hbm2ddl.auto=update
54. hibernate.show_sql=true
55. hibernate.format_sql=false
56. </value>
57. </property>
58. </bean>
59.
60. <!--hibernate事务管理器配置-->
61. <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
62. <property name="sessionFactory" ref="sessionFactory"></property>
63. </bean>
64.
65. <!--spring可以用xml和注解来配置事务 声明 -->
66. <tx:annotation-driven transaction-manager="transactionManager"/>
67.</beans>
*配置hibernate的model.hbm.xml和创建model类
*创建service
Java代码
1.public interface EmployeeService {
2. public boolean save(Employee employee);
3. public boolean update(Employee employee);
4. public Employee find(String username);
5. public boolean delete(String... username);//表示可变参数
6. public List<Employee> findAll();
7.}
service实现类:
Java代码
1.import java.util.List;
2.
3.import javax.annotation.Resource;
4.
5.import org.apache.log4j.Logger;
6.import org.hibernate.SessionFactory;
7.import org.springframework.stereotype.Service;
8.import org.springframework.transaction.annotation.Propagation;
9.import org.springframework.transaction.annotation.Transactional;
10.
11.import com.yss.bean.Employee;
12.import com.yss.service.EmployeeService;
13.
14./**
15. * @author qing 默认bean名称 employeeServiceBean
16. *@Service @Transactional 注入service和开启事务
17. */
18.@Service
19.@Transactional
20.public class EmployeeServiceBean implements EmployeeService {
21. private static Logger logger = Logger.getLogger(Employee.class);
22. /**
23. * 注入sessionFactory
24. */
25. @Resource SessionFactory factory;
26.
27. public boolean delete(String... usernames) {
28. try {
29. for (String username : usernames) {
30. factory.getCurrentSession().delete(
31. factory.getCurrentSession().load(Employee.class,
32. username));
33. }
34. } catch (Exception e) {
35. logger.error(e.getMessage());
36. return false;
37. }
38. return true;
39. }
40.
41. /*
42. * (non-Javadoc)
43. *
44. * @see com.yss.service.EmployeeService#find(com.yss.bean.Employee)
45. * 此标注表示不需要事务处理
46. */
47. @Transactional(propagation = Propagation.NOT_SUPPORTED)
48. public Employee find(String username) {
49. return (Employee) factory.getCurrentSession().get(Employee.class,
50. username);
51. }
52.
53. @SuppressWarnings("unchecked")
54. @Transactional(propagation = Propagation.NOT_SUPPORTED)
55. public List<Employee> findAll() {
56. return factory.getCurrentSession().createQuery("from Employee emp")
57. .list();
58. }
59.
60. public boolean save(Employee employee) {
61. try {
62. factory.getCurrentSession().persist(employee);// .save(employee);//
63. // 获取已经开好的Session
64. } catch (Exception e) {
65. logger.error(e.getMessage());
66. return false;
67. }
68. return true;
69. }
70.
71. public boolean update(Employee employee) {
72. try {
73. factory.getCurrentSession().merge(employee);// 类似于saveOrUpdate()方法
74. } catch (Exception e) {
75. logger.error(e.getMessage());
76. return false;
77. }
78. return true;
79. }
80.
81.}