spring入门(11)-spring与hibernate整合完成增删改查的操作(封装HibernateTemplate模版类对象)

来源:互联网 发布:matlab处理txt数据 编辑:程序博客网 时间:2024/05/01 12:48

今天是spring的最后一节课,这节课老师讲了spring与hibernate整合完成增删改查的操作,这是很重要的一节课,这也是第一次真正的实现spring结合Hibernate和数据库连接上,下面是这次课的过程实现:

首先是数据库建表:采用Oracle数据库,在Scott用户里新建USERS表,


所用jar包:


实现源码如下:

Users.java

package www.csdn.spring.hibernate.domain;import java.io.Serializable;import java.util.Date;public class Users implements Serializable {/** *  */private static final long serialVersionUID = 1L;private Integer id;private String name;private Date regTime;public Users() {super();// TODO Auto-generated constructor stub}public Users(Integer id, String name, Date regTime) {super();this.id = id;this.name = name;this.regTime = regTime;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Date getRegTime() {return regTime;}public void setRegTime(Date regTime) {this.regTime = regTime;}@Overridepublic String toString() {return "Users [id=" + id + ", name=" + name + ", regTime=" + regTime+ "]";}}

Users.hbm.xml

<!DOCTYPE hibernate-mapping PUBLIC     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="www.csdn.spring.hibernate.domain"><class name="Users" table="USERS" schema="SCOTT"><id name="id" column="ID"><generator class="sequence"><param name="sequence">USERS_SEQ</param></generator></id><property name="name" type="string" column="NAME" /><property name="regTime" type="timestamp" column="REGTIME" /></class></hibernate-mapping>

UsersDao.java

package www.csdn.spring.hibernate.dao;import java.util.List;import www.csdn.spring.hibernate.domain.Users;public interface UsersDao{public void save(Users entity);public void deleteById(Class clazz,Integer id);public List<Users> getObjects(Class clazz);public void update(Users entity);}

UsersDaoImpl.java

package www.csdn.spring.hibernate.dao;import java.util.List;import org.springframework.orm.hibernate3.HibernateTemplate;import www.csdn.spring.hibernate.domain.Users;public class UsersDaoImpl implements UsersDao{// 封装模版类对象private HibernateTemplate hibernateTemplate;// 注入public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {this.hibernateTemplate = hibernateTemplate;}@Overridepublic void save(Users entity) {hibernateTemplate.save(entity);}@Overridepublic List<Users> getObjects(Class clazz) {return hibernateTemplate.find("from "+clazz.getName());}@Overridepublic void deleteById(Class clazz,Integer id) {//hibernateTemplate.delete(hibernateTemplate.get(clazz.getName(), id));hibernateTemplate.bulkUpdate("delete from "+clazz.getName()+" where id="+id);}@Overridepublic void update(Users entity) {hibernateTemplate.update(entity);}}
UserTest.java

package www.csdn.spring.hibernate.dao;import java.util.Date;import java.util.List;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import www.csdn.spring.hibernate.domain.Users;public class UserTest {//保存@Testpublic void save(){ApplicationContext ac=new ClassPathXmlApplicationContext("app*.xml");UsersDao usersdao=ac.getBean("usersDaoImpl",UsersDao.class);usersdao.save(new Users(null,"chrp999999999",new Date()));System.out.println(usersdao.getClass());}//获取所有@Testpublic void getObjects(){ApplicationContext ac=new ClassPathXmlApplicationContext("app*.xml");UsersDao usersdao=ac.getBean("usersDaoImpl",UsersDao.class);List<Users> user=usersdao.getObjects(Users.class);for(Users u:user){System.out.println(u.toString());}}//根据id删除@Testpublic void delete(){ApplicationContext ac=new ClassPathXmlApplicationContext("app*.xml");UsersDao usersdao=ac.getBean("usersDaoImpl",UsersDao.class);usersdao.deleteById(Users.class,5);System.out.println(usersdao.getClass());}//更新@Testpublic void update(){ApplicationContext ac=new ClassPathXmlApplicationContext("app*.xml");UsersDao usersdao=ac.getBean("usersDaoImpl",UsersDao.class);usersdao.update(new Users(2,"deep",new Date()));System.out.println(usersdao.getClass());}}


jdbc.properties

jdbc.driverClassName=oracle.jdbc.driver.OracleDriverjdbc.username=scottjdbc.password=tigerjdbc.url=jdbc\:oracle\:thin\:@127.0.0.1\:1521\:orcl

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"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"><!-- 导入spring-dao的文件 --><import resource="spring.xml"/><import resource="spring-dao.xml" /><!-- 分散配置解析 --><context:property-placeholder location="jdbc.properties" /></beans>


spring.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"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"><!-- 数据库连接的数据源 --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><!-- 数据库连接驱动 --><property name="driverClassName" value="${jdbc.driverClassName}" /><!-- 连接的用户名 --><property name="username" value="${jdbc.username}" /><!-- 连接的用户密码 --><property name="password" value="${jdbc.password}" /><!-- 连接的url地址 --><property name="url" value="${jdbc.url}" /><!--数据库的连接的最小值  --><!--数据库的连接的最大值  --></bean><!-- 怎么与hibernate整合的 --><!-- sessionFactory工厂 --><bean id="localSessionFactoryBean"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><!-- 数据库连接的数据源 --><property name="dataSource" ref="dataSource" /><!-- hibernate的映射文件配置 --><property name="mappingResources"><array><value>www/csdn/spring/hibernate/domain/Users.hbm.xml</value></array></property><!-- hibernate的属性配置 --><property name="hibernateProperties"><props><prop key="show_sql">true</prop><prop key="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop></props></property></bean>   <!-- hibernate封装的模版类 -->   <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">     <property name="sessionFactory" ref="localSessionFactoryBean"/>   </bean>   <!-- 事务管理器 -->   <bean  id="hibernateTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">       <property name="sessionFactory" ref="localSessionFactoryBean"/>   </bean>         <!-- 事务的通知-->   <tx:advice id="txAdvice" transaction-manager="hibernateTransactionManager">       <!-- 事务的属性 -->       <tx:attributes>           <!-- 事务的具体执行方法 -->           <tx:method name="save*" propagation="REQUIRED" isolation="DEFAULT"/>           <tx:method name="delete*" propagation="REQUIRED" isolation="DEFAULT"/>           <tx:method name="update*" propagation="REQUIRED" isolation="DEFAULT"/>           <tx:method name="get*" propagation="REQUIRED" isolation="DEFAULT" read-only="true"/>       </tx:attributes>   </tx:advice>      <!-- 切面 --><!-- <aop:config><aop:pointcut expression="execution(*..Service*.*(..))" id="mycut" /><aop:advisor advice-ref="txAdvice" pointcut-ref="mycut" /></aop:config>    --></beans>

spring-dao.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xsi:schemaLocation="http://www.springframework.org/schema/beans           http://www.springframework.org/schema/beans/spring-beans.xsd">         <bean id="usersDaoImpl" class="www.csdn.spring.hibernate.dao.UsersDaoImpl">     <property name="hibernateTemplate" ref="hibernateTemplate">    </property>    </bean> </beans>
到此为止简单的spring+Hibernate完成增删改查就实现了,运行测试类UserTest.java后结果如下




原创粉丝点击