Spring2.5+Hibernate3.2 注释 可以使用daobase
很久没有写java代码,这次发现Spring2.5+hibernate3.2可以像EJB使用注释
我不是什么告诉,Spring2.0 都没看过 我原来学的是1.2 而且公司都是框架封装好的
也没什么时间可以深究学习,E文有不好 o(∩_∩)o...哈哈
我的注释只是省去了配置文件。其他的还是跟原来差不多处理。网路上找了很多,都没有提及我想要的处理方式,也行太肤浅(在高手眼里)。
说了些废话,别拍砖,希望能给有用的人一些参考:
贴出代码与配置:
工具:myeclipse6.5+tomcat6.0+mysql5.0
首先请导入Spring2.5(最好是Spring2.5.6)与hibernate3.2的包
那位手头有Spring2.5.6的下载地址麻烦给个 官方要注册。。。
采用daobase的方法,其他dao可以公用
package model.dao;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.orm.hibernate3.HibernateTemplate;import org.springframework.stereotype.Component;@Componentpublic class DaoBase{@Autowiredpublic HibernateTemplate hibernateTemplate;public void createEntity(Object obj){hibernateTemplate.save(obj);}public List loadAllEntity(Class clazz){return hibernateTemplate.loadAll(clazz);}}public class DaoBase extends HibernateDaoSupport{/**保存单个对象 */public void saveObject(Object obj){getHibernateTemplate().save(obj);} /**查找指定对象所有记录,无where条件 返回List */public List findObjectAll(Class entityClass){return (List)getHibernateTemplate().loadAll(entityClass);}}package model.dao;import java.util.List;import entity.Userinfo;public interface UserInfoDao {public abstract void addUserInfo(Userinfo user);public abstract List getUserInfoAll(Class user);}package model.dao.impl;import model.dao.DaoBase;import java.util.List;import org.springframework.stereotype.Component;import entity.Userinfo;import model.dao.UserInfoDao;@Component("userInfoDao")public class UserInfoDaoImpl extends DaoBase implements UserInfoDao {public void addUserInfo(Userinfo user){createEntity(user);}public List getUserInfoAll(Class user){return loadAllEntity(user);}}package entity;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name = "userinfo", catalog = "test")public class Userinfo implements java.io.Serializable {// Fieldsprivate String id;private String username;private String password;private String email;// Constructors/** default constructor */public Userinfo() {}/** full constructor */public Userinfo(String id, String username, String password, String email) {this.id = id;this.username = username;this.password = password;this.email = email;}// Property accessors@Id@Column(name = "id", unique = true, nullable = false, length = 50)public String getId() {return this.id;}public void setId(String id) {this.id = id;}@Column(name = "username", nullable = false, length = 40)public String getUsername() {return this.username;}public void setUsername(String username) {this.username = username;}@Column(name = "password", nullable = false, length = 20)public String getPassword() {return this.password;}public void setPassword(String password) {this.password = password;}@Column(name = "email", nullable = false, length = 60)public String getEmail() {return this.email;}public void setEmail(String email) {this.email = email;}}package model.service;import java.util.List;import entity.Userinfo;public interface UserInfoService {public abstract boolean createUserInfo(Userinfo user);public abstract List getUserInfoAll(Class user);}package model.service.impl;import model.dao.UserInfoDao;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import entity.Userinfo;import model.service.UserInfoService;@Component("userInfoService")public class UserInfoServiceImpl implements UserInfoService {//Spring 2.5 引入了 @Autowired 注释,//它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。@Autowiredpublic UserInfoDao userInfoDao;/* (non-Javadoc) * @see service.impl.UserInfoService#createUserInfo(java.entity.UserInfo) */public boolean createUserInfo(Userinfo user){if(user==null) return false;try{userInfoDao.addUserInfo(user);return true;}catch(Exception e){e.printStackTrace();return false;}}/* (non-Javadoc) * @see service.impl.UserInfoService#getUserInfoAll(java.lang.Class) */public List getUserInfoAll(Class user){List list = null;try{list= userInfoDao.getUserInfoAll(Userinfo.class);}catch(Exception e){e.printStackTrace();return null;}return list;}}package test;import model.service.UserInfoService;import org.springframework.context.ApplicationContext;import entity.Userinfo;public class TestStr {private static ApplicationContext ctx = null;static{ctx = new org.springframework.context.support.FileSystemXmlApplicationContext("F:\\workspaces\\jpaDemo\\WebRoot\\WEB-INF\\applicationContext.xml");}/** * @param args */public static void main(String[] args)throws Exception {// TODO Auto-generated method stubUserInfoService userInfoSrv = (UserInfoService) ctx.getBean("userInfoService");Userinfo user = new Userinfo();user.setId("20080002");user.setUsername("zhong");user.setPassword("1234");user.setEmail("meme@163.com");userInfoSrv.createUserInfo(user);}}<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><context-param><param-name>contextConfigLocation</param-name><!-- Spring --><param-value>/WEB-INF/applicationContext.xml</param-value></context-param><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>
<?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"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"><bean id="dataSource"value="jdbc:mysql://localhost:3306/test"></property><property name="username" value="root"></property><property name="password" value=""></property><property name="driverClassName"value="com.mysql.jdbc.Driver"></property></bean><!-- 配置hibernate SessionFactory --><bean id="sessionFactory"ref="dataSource"></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.show_sql">true</prop></props></property><!-- spring2.5.6 可以直接 整个包搜索读取<property name="packagesToScan" value="org.eline.entity*.*" /> --><property name="annotatedClasses"><list><value>entity.Userinfo</value></list></property></bean><bean id="transactionManager"/></property></bean> <context:component-scan base-package="model" /><bean id="transactionInterceptor"/></property><property name="transactionAttributes"><!-- 下面定义事务传播属性--><props><prop key="insert*">PROPAGATION_REQUIRED</prop><prop key="update*">PROPAGATION_REQUIRED</prop><prop key="save*">PROPAGATION_REQUIRED</prop><prop key="add*">PROPAGATION_REQUIRED</prop><prop key="update*">PROPAGATION_REQUIRED</prop><prop key="remove*">PROPAGATION_REQUIRED</prop><prop key="delete*">PROPAGATION_REQUIRED</prop><prop key="get*">PROPAGATION_REQUIRED,readOnly</prop><prop key="find*">PROPAGATION_REQUIRED,readOnly</prop><prop key="load*">PROPAGATION_REQUIRED,readOnly</prop><prop key="change*">PROPAGATION_REQUIRED</prop><prop key="*">PROPAGATION_REQUIRED</prop></props></property></bean><!-- 配置hibernate 模板代码 --><bean id="hibernateTemplate"ref="sessionFactory"></property></bean><!-- 定义自动代理BeanNameAutoProxyCreator --><bean id="beanNameAutoProxyCreator"name="code"><prop key="*">PROPAGATION_REQUIRED</prop>
USE `test`;/*Table structure for table `userinfo` */DROP TABLE IF EXISTS `userinfo`;CREATE TABLE `userinfo` ( `id` varchar(50) NOT NULL, `username` varchar(40) NOT NULL, `password` varchar(20) NOT NULL, `email` varchar(60) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;