浏览 4614 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-06
最后修改:2008-12-06
我不是什么告诉,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; @Component public class DaoBase{ @Autowired public HibernateTemplate hibernateTemplate; public void createEntity(Object obj){ hibernateTemplate.save(obj); } public List loadAllEntity(Class clazz){ return hibernateTemplate.loadAll(clazz); } } 此处Daobase 为什么无法使用类似下面代码,如果要这么做怎么处理? 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); } } =============================== userinfoDao 接口 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); } userinfoDaoImpl 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); } } userInfo Entity 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 { // Fields private 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; } } userInfoService 接口 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); } userInfoServiceImpl 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 注释, //它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 @Autowired public 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; } } Test 类 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 stub UserInfoService 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); } } Web.xml <?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> applicationContent.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" 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" class="org.apache.commons.dbcp.BasicDataSource"> <property name="url" 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" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <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> </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" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean> <context:component-scan base-package="model" /> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <!-- 事务拦截器bean需要依赖注入一个事务管理器 --> <property name="transactionManager"> <ref local="transactionManager" /> </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" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!-- 定义自动代理BeanNameAutoProxyCreator --> <bean id="beanNameAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <!-- 指定对满足哪些bean name的bean自动生成业务代理 --> <property name="beanNames"> <list> <value>*Service</value> <!-- <value>*ServiceImpl</value> --> </list> </property> <!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器--> <property name="interceptorNames"> <list> <!-- 此处可增加其他新的Interceptor --> <value>transactionInterceptor</value> </list> </property> </bean> </beans> 另:此处事物配置这句为什么不能加readOnly <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; 期望牛人指点下,我知道javaeye牛人很多 。 以上只是自己一点点摸索(只是在TestStr测试通过,未与表现层结合),欢迎拍砖!!! 附近是工程,大家直接导入可以使用!!! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-12-07
主键生成策略呢!~
使用SPRING2.5为什么不使用aop配置!~ |
|
返回顶楼 | |
发表时间:2008-12-07
tangbo530 写道 主键生成策略呢!~
使用SPRING2.5为什么不使用aop配置!~ 1:主键生成策略是我疏漏,忘记写: @GeneratedValue(strategy=GenerationType.AUTO),一般我采用的是UUID生成方式。 2:AOP配置,我这个示例不涉及。 本示例只针对去除Hbm的xml文件,以及去除Spring管理bean的配置文件。[color=red][/color] 我觉得既然用了Spring ,那么Spring的特性还是会用。 好比hibernate3.2已经可以通过@NamedQuery 做查询,但我更愿意用hibernateTemp 去处理。 |
|
返回顶楼 | |
发表时间:2008-12-09
这位同学,spring现在现在不用注册可以下载,目前会转到社区,出现个界面让你填写一些信息,在这个页面的左下角有个蓝色的连接,直接可以下载。目前spring改变了维护策略,只为社区提供版本更新。不过你不要用ie8,ie8(目前是beta版本)无法显示下载页面
|
|
返回顶楼 | |
发表时间:2008-12-09
xuyao 写道 这位同学,spring现在现在不用注册可以下载,目前会转到社区,出现个界面让你填写一些信息,在这个页面的左下角有个蓝色的连接,直接可以下载。目前spring改变了维护策略,只为社区提供版本更新。不过你不要用ie8,ie8(目前是beta版本)无法显示下载页面
谢谢指导!!! 顺便说下,头像很有意思 |
|
返回顶楼 | |