1.先建简单的springMVC框架(源码链接:http://download.csdn.net/detail/mastershaw/9501059)
建好之后在添加hibernate。
因为在没有structs和spring下建hibernate,所以通过反向工程得
到的basic dao,不是spring dao。
下面的文件为:
这时我们就要修改一些类和配置文件了,
其中把原先的Ws删掉,把WsId这个类名改为Ws。再修改Ws.hbm.xml中的数据,改为
如下:
记住:Ws.hbm.xml文件中一定最前面是<id>***</id>,不是<property>***</property>
2.添加好hibernate的反向工程之后,系统就会自动调用hibernate.cfg.xml的文件的,不用在springmvc.xml配置别的信息。
3.最后调用代码
UserinfoDAO dao = new UserinfoDAO();
List list = dao.findByProperty("title",username);
System.out.println(list.size());
for(Iterator<Userinfo> it=list.iterator();it.hasNext();){
Userinfo userinfo=it.next();
System.out.println(userinfo.getTitle());
userinfo.setPwd(userinfo.getTitle());
dao.save(userinfo);
System.out.println("save ok");
}
4.你会发现save()无效
5.你参考如下:
这几天正在使用hibernate进行数据库的开发,通过myeclipse的hibernate reverse engieering生产的StuDao,其中的save方法并不能生效.
后来到网上查找了一下,找到了解决方法,但其中原因并不是很清楚.
原始的方法:
- public void save(Stu transientInstance) {
- log.debug("saving Stu instance");
- try {
- getSession().save(transientInstance);
- } catch (RuntimeException re) {
- log.error("save failed", re);
- throw re;
- }
- }
方法一:
- public void save(Stu transientInstance) {
- log.debug("saving Stu instance");
- try {
- <span style="color:#FF0000;">Session session = getSession();
- Transaction tran = session.beginTransaction();
- session.save(transientInstance);
- tran.commit();</span>
- log.debug("save successful");
- } catch (RuntimeException re) {
- log.error("save failed", re);
- throw re;
- }
- }
方法二:
在hibernate配置文件hibernate.cfg.xml中添加如下语句
- <property name="connection.autocommit">true</property>
修改代码为:
- public void save(Stu transientInstance) {
- log.debug("saving Stu instance");
- try {
- getSession().save(transientInstance);
- getSession().flush();
- log.debug("save successful");
- } catch (RuntimeException re) {
- log.error("save failed", re);
- throw re;
- }
- }
源码下载链接:http://download.csdn.net/detail/mastershaw/9501053