注册时无法写入数据库getSession().save(transientInstance)

参考:

Hibernate 中getSession().save() 保存不到数据库 解决办法


没有使用事务管理模式,myEclipse的反向工程生成的dao的save方法 

	public void save(User transientInstance) {
		log.debug("saving User instance");
		
		try {
			getSession().save(transientInstance);
			log.debug("save successful");
		} catch (RuntimeException re) {
			log.error("save failed", re);
			throw re;
		}
		
	}

 
并不能说这个没有添加事务管理模式,只不过这么写他有的时候灵有的时侯不灵,那我们改为显示的提交事务就成了! 
	public void save(User transientInstance) {
		log.debug("saving User instance");
		<span style="color:#ff0000;">Transaction transaction = getSession().beginTransaction();</span>
		try {
			getSession().save(transientInstance);
			log.debug("save successful");
		} catch (RuntimeException re) {
			log.error("save failed", re);
			throw re;
		}
		<span style="color:#ff0000;">transaction.commit();
		getSession().flush();
		getSession().close();</span>
	}


结论: 
hibernate成功执行sava且不报错后,数据库中没有数据的原因:hibernate 必须显示的声明提交事务 


JDBC默认的是自动提交 
Hibernian默认的是手动提交,必须开启事务,手动提交,否则数据库中没有保存的记录: 
            Transaction transaction= getSession().beginTransaction(); 
            getSession().save(transientInstance); 
            transaction.commit(); 

你可能感兴趣的:(Hibernate,数据库)