首先分为三个部分,一:引入jar包。二:编写entity类dao类以及service类。三:引入.hbm.xml配置文件,编写公共类1.引入数据源2.创建sessionfactory2.1加载mappinglocation映射3.事务管理器3.1事务通知3.2aop配置4.测试
第一步:首先第一步引入jar包,在导入spring的jar包的同时导入如下hibernate的jar包
第二步:
1.实体类
package cn.itcast.pojo; public class User { private Long id; private String userName; private int age; private String tel; private String Address ; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } public String getAddress() { return Address; } public void setAddress(String address) { Address = address; } @Override public String toString() { return "User [id=" + id + ", userName=" + userName + ", age=" + age + ", tel=" + tel + ", Address=" + Address + "]"; } }
2.dao类
public class UserDao extends HibernateDaoSupport implements IUserDao{ @Override public void save(User user) { getHibernateTemplate().save(user); } @Override public void update(User user) { getHibernateTemplate().update(user); } @Override public void delete(Serializable id) { User d=findById(id); if(d!=null) { getHibernateTemplate().delete(id); } } @Override public User findById(Serializable id) { return getHibernateTemplate().get(User.class, id); } @Override public List<User> getAll() { return getHibernateTemplate().loadAll(User.class); } }
这里要注意的是继承了hibernateDaosupport类
3.service类
public class UserService implements IUserService { IUserDao userDao; public IUserDao getUserDao() { return userDao; } public void setUserDao(IUserDao userDao) { this.userDao = userDao; } @Override public void save(User user) { userDao.save(user); } @Override public void update(User user) { userDao.update(user); } @Override public void delete(Serializable id) { userDao.delete(id); } @Override public User findById(Serializable id) { return userDao.findById(id); } @Override public List<User> getAll() { return userDao.getAll(); } }
注意一定要给set方法
第三步
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 声明一个字符串 --> <!-- 所有模块共用模块 --> <!-- 1.数据源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="com.mysql.jdbc.Driver"></property> <property name="jdbcUrl" value="jdbc:mysql:///crm"></property> <property name="user" value="root"></property> <property name="password" value="root"></property> <property name="initialPoolSize" value="2"></property> <property name="maxPoolSize" value="6"></property> </bean> <!-- 2.spring对sessionfactory创建支持 --> <!-- 普通配置 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> <!-- 映射加载! --> <property name="mappingLocations"> <list> <value>classpath:cn/itcast/pojo/*.hbm.xml</value> <!-- <value>classpath:cn/itcast/pojo/*.hbm.xml</value> --> </list> </property> </bean> <!-- 3事务管理 --> <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!-- 3.1 配置事务管理器(切面类) --> <!-- 3。2事务通知 --> <!-- get/find开头方法如果有事务则支持,且只读事务;如果没有也支持--> <!-- save/update/delete开头方法如果有职务则支持,必须在事务环境中运行--> <!-- 都不满足的事务使用读写事务(有事务)--> <tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes > <tx:method name="get*" read-only="true" propagation="SUPPORTS"/> <tx:method name="find*" read-only="true" propagation="SUPPORTS"/> <tx:method name="save*" propagation="REQUIRED"/> <tx:method name="update*" propagation="REQUIRED"/> <tx:method name="delete*" propagation="REQUIRED"/> <tx:method name="*" read-only="false"/> </tx:attributes> </tx:advice> <!-- c。aop配置 --> <aop:config> <aop:pointcut expression="execution(* cn.itcast.service.impl.*Service.*(..))" id="pt"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="pt"/> </aop:config> </beans>
同时引入
<import resource="bean-public.xml"/> <import resource="bean-dao.xml"/> <import resource="bean-service.xml"/>
四:测试
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("/bean.xml") public class Test_Spring_Hibernate{ @Resource private IUserService userService; @Test public void save() { User user=new User(); user.setId(1L); user.setAge(10); user.setTel("13423567834"); user.setAddress("东北大学"); user.setUserName("zxl"); userService.save(user); }
}