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方式整合】
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- mybatisplus|mybatisplus where QueryWrapper加括号嵌套查询方式
- 10.两种记账方式
- 数据库|SQL行转列方式优化查询性能实践
- 思维导图让你换一种打开方式学数学
- 日更是片段写作训练的好方式
- H5、js调用手机通话|H5、js调用手机通话,短信
- 推荐两种减压方式
- 迫害我们心中的经典,以翻拍的方式
- 低自尊