在其他项目中加入hibernate

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.检查数据库
在这里插入图片描述
完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值