读书人

Spring2.5+Hibernate3.2 诠释 可以使用

发布时间: 2012-10-30 16:13:36 作者: rapoo

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);}}

此处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 {// 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;}}

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 注释,//它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。@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;}}

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 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);}}

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"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;


期望牛人指点下,我知道javaeye牛人很多 。

以上只是自己一点点摸索(只是在TestStr测试通过,未与表现层结合),欢迎拍砖!!!

附近是工程,大家直接导入可以使用!!!
1 楼 tangbo530 2008-12-07 主键生成策略呢!~
使用SPRING2.5为什么不使用aop配置!~ 2 楼 xiaofengtoo 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 去处理。


3 楼 xuyao 2008-12-09 这位同学,spring现在现在不用注册可以下载,目前会转到社区,出现个界面让你填写一些信息,在这个页面的左下角有个蓝色的连接,直接可以下载。目前spring改变了维护策略,只为社区提供版本更新。不过你不要用ie8,ie8(目前是beta版本)无法显示下载页面 4 楼 xiaofengtoo 2008-12-09 xuyao 写道这位同学,spring现在现在不用注册可以下载,目前会转到社区,出现个界面让你填写一些信息,在这个页面的左下角有个蓝色的连接,直接可以下载。目前spring改变了维护策略,只为社区提供版本更新。不过你不要用ie8,ie8(目前是beta版本)无法显示下载页面

谢谢指导!!!

顺便说下,头像很有意思

读书人网 >软件架构设计

热点推荐