spring+hibernate|spring+hibernate Annotation方式整合

今天开始学习s2sh的整合,之前学java一直都是看书和视频学习的,但是发现这方面的资料很少,不过搞了一天的时间也算是终于整合好了,现在说一下我的体会.
首先先建立我们的实体类,user和Log。
package com.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class User { private int age; private int id; private String name; public int getAge() { return age; } @Id @GeneratedValue public int getId() { return id; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public void setId(int id) { this.id = id; } public void setName(String name) { this.name = name; } }
package com.model; import java.util.Date; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Log { private int id; private String info; private Date date; @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } }
这里为了方便起见,就没有为表和字段弄新的值了,和类里面的名字一样。
然后是我们的业务层,我们采用接口实现的方式,下面是2个接口
package com.service; import com.model.User; public interface UserManager { public void addUser(User user); public void deleteUser(User user); public void updateUser(User user); }

package com.service; import com.model.Log; ; public interface LogRecord { public void addLog(Log log); }
分别实现他们
接着我们来配置我们的配置文件,这里面的话,我们要把hibernate的事务注入到spring,让spring帮我们实现管理,
下面的代码实现了这个功能,取名为applicationContext-common.xml

接着写我们的业务实现类,并添加到srping管理。applicationContext-beans.xml:

然后写我们的实现类,实现我们的业务逻辑。
package com.service; import java.util.Date; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.model.Log; import com.model.User; public class UserManagerImpl extends HibernateDaoSupport implements UserManager { private LogRecord logRecord; public void setLogRecord(LogRecord logRecord) { this.logRecord = logRecord; } @Override public void addUser(User user) { this.getHibernateTemplate().save(user); Log log = new Log(); log.setInfo("增加用户"); log.setDate(new Date()); logRecord.addLog(log); } @Override public void deleteUser(User user) { this.getHibernateTemplate().delete(user); Log log = new Log(); log.setInfo("删除用户"); log.setDate(new Date()); logRecord.addLog(log); } @Override public void updateUser(User user) { this.getHibernateTemplate().update(user); Log log = new Log(); log.setInfo("更新用户"); log.setDate(new Date()); logRecord.addLog(log); } }
package com.service; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.model.Log; public class LogRecordImp extends HibernateDaoSupport implements LogRecord { @Override public void addLog(Log log) { this.getHibernateTemplate().save(log); } }

最后配置我们的hibernate.cfg.xml
jdbc:mysql://localhost:3306/hibernate com.mysql.jdbc.Driver root 6772492 org.hibernate.dialect.MySQLDialect true create true thread
不要忘记在src下面加入log4j.properties,方便我们的调试

最后写个类测试下我们的类。
package com.test; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.model.User; import com.service.UserManager; public class UserTest { /** * @param args */ public static void main(String[] args) { User user = new User(); user.setName("张三"); BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext-*.xml"); UserManager userManager = (UserManager)factory.getBean("userManager"); try { userManager.addUser(user); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

在数据库中能查到相应记录,ok。算是集成成功了。
之前因为不小心把id的注解写在了set方法上面。导致我查了很久的原因,不过后面算是解决了,这也说明了我hibernate的不熟悉,不过,慢慢会好起来的 呵呵

最后的图标是项目用到的jar包,供参考。
有些可能没用到,因为都是之前项目里面的库,直接拿过来用的,明天整合struts2 期待

【spring+hibernate|spring+hibernate Annotation方式整合】

    推荐阅读