一、搭建测试项目myproject,添加Hibernate4.1、Struts2支持;
二、在MySql数据新建数据库及表:myDB、user表
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_name` varchar(32) DEFAULT NULL, `password` varchar(32) DEFAULT NULL, `address` varchar(100) DEFAULT NULL, `pohone_number` varchar(20) DEFAULT NULL, `create_time` datetime DEFAULT NULL, `update_time` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
三、打开DB Browser视图,在user表上右键选择Hibernate Reverse Engineering,钩选:
Create POJO<>DB Table mapping information
Java Data Object(POJO<>DB Table)
Java Data Access Object(DAO)(Hibernate 3 and above),选择Base class:<Default Base DAO>(recommended)
,点击Next、Next、Finish;
生成相应代码User.java、User.hbm.xml、BaseHibernateDAO.java、IBaseHibernateDAO.java、UserDAO.java。
四、调用:
采用上章方式,建立Struts框架,在LoginAction.java中添加代码:
@Override public String execute() throws Exception { // TODO Auto-generated method stub UserDAO test= new UserDAO(); com.cn.whirlpool.rbac.User model=test.findById(1); System.out.println(model.getUserName()); return SUCCESS; }在控制台会输出用户名。
虽然只实现了查询功能,但增删改底层DAO生成以后,调用方式都不复杂,暂且不测试了。
下一步搭建Spring环境测试Spring代码。
五、一些问题处理
1.Hibernate里 getSession().save(0) 与 getHibernateTemplate().save(o)
public void save(KmTypes transientInstance) { log.debug("saving KmTypes instance"); try { getSession().save(transientInstance); log.debug("save successful"); } catch (RuntimeException re) { log.error("save failed", re); throw re; } }
session.flush()或transaction.commit()。
如果需要getSession().save()可以直接保存进数据库,则要在applicationContext.xml把service和dao关联起来。
getHibernateTemplate().save()是Spring的方法支持声明式事务管理。如果配置了事务,它会自动调用事务并在操作完毕后自动关闭session。