1.先在数据库中建表
CREATE TABLE `t_user` (
`pk_user_id` bigint(20) NOT NULL AUTO_INCREMENT,
`login_name` varchar(45) DEFAULT NULL,
`email` varchar(45) DEFAULT NULL,
`password` varchar(45) DEFAULT NULL,
PRIMARY KEY (`pk_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.连接到数据库,还会帮我们自动生成hibernate的配置文件,和一个sessionFactory类。
3.用myeclipse生成实体类和映射配置文件
目录结构:
把myeclipse添加的lib引用去掉,换成hibernate4。
4.导包
5.修改UserAction类
package demo.myssh.action;
import com.opensymphony.xwork2.ActionSupport;
import demo.myssh.business.UserService;
import demo.myssh.model.User;
@SuppressWarnings("serial")
public class UserAction extends ActionSupport {
@Override
public String execute() throws Exception {
this.addActionMessage("UserAction working");
// this.addActionMessage("hello world.");
this.addActionMessage(userService.doing());// 修改下,确认注入成功。
return ActionSupport.SUCCESS;
}
// 注入用属性
private UserService userService;
// 注入用的方法
public void setUserService(UserService userService) {
this.userService = userService;
}
public String add() throws Exception {
userService.save(new User(loginname, email, password));
return ActionSupport.SUCCESS;
}
private String loginname;
private String email;
private String password;
public void setLoginname(String loginname) {
this.loginname = loginname;
}
public void setEmail(String email) {
this.email = email;
}
public void setPassword(String password) {
this.password = password;
}
}
修改UserService:
package demo.myssh.business;
import demo.myssh.dao.UserDAO;
import demo.myssh.model.User;
public class UserService {
public String doing() {
return "UserService working";
}
private UserDAO userDAO;
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
public void save(User user) {
userDAO.save(user);
}
}
修改HibernateSessionFactory类:
package demo.myssh.dao;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
public class HibernateSessionFactory {
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private static Configuration configuration = new Configuration();
private static org.hibernate.SessionFactory sessionFactory;
private static String configFile = CONFIG_FILE_LOCATION;
private static ServiceRegistry serviceRegistry;
static {
try {
//hibernate 3 的方法
// configuration.configure(configFile);
// sessionFactory = configuration.buildSessionFactory();
//hibernate 4 的方法
serviceRegistry = new ServiceRegistryBuilder().applySettings(
configuration.configure().getProperties())
.buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
} catch (HibernateException e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
private HibernateSessionFactory() {
}
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}
return session;
}
public static void rebuildSessionFactory() {
try {
// configuration.configure(configFile);
// sessionFactory = configuration.buildSessionFactory();
serviceRegistry = new ServiceRegistryBuilder().applySettings(
configuration.configure().getProperties())
.buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
} catch (HibernateException e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close();
}
}
public static org.hibernate.SessionFactory getSessionFactory() {
return sessionFactory;
}
public static void setConfigFile(String configFile) {
HibernateSessionFactory.configFile = configFile;
sessionFactory = null;
}
public static Configuration getConfiguration() {
return configuration;
}
}
修改hibernate的配置文件:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- properties -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/myssh</property>
<property name="connection.username">root</property>
<property name="connection.password"></property>
<property name="connection.autocommit">true</property>
<!-- mapping files -->
<mapping resource="demo/myssh/model/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
修改spring的配置文件applicationContext.xml,提供注入:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd">
<bean id="userAction" class="demo.myssh.action.UserAction">
<property name="userService" ref="userService" />
</bean>
<bean id="userService" class="demo.myssh.business.UserService">
<property name="userDAO" ref="userDAO"></property>
</bean>
<bean id="userDAO" class="demo.myssh.dao.UserDAO">
</bean>
</beans>
6.运行,之后在页面添加数据:
7.检查数据库
完成