Hibernate-03新建客户代码实现
Hibernate完成添加客户
Servlet
package com.feizhu.servlet;
import java.io.IOException;import java.lang.reflect.InvocationTargetException;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import com.feizhu.domain.Customer;
import com.feizhu.service.SaveCustomerService;
/**
* Servlet implementation class SaveCustomerServlet
*/
public class SaveCustomerServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码
request.setCharacterEncoding("utf-8");
//接受参数
Map<String, String[]> map = request.getParameterMap();
//封装数据 导入BeanUtils工具包
Customer c=new Customer();
try {
//封装数据
BeanUtils.populate(c, map);
//调用SaveCustomerService 业务层
new SaveCustomerService().saveCustomer(c);
System.out.println("客户添加成功");
} catch (Exception e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
service
package com.feizhu.service;
import com.feizhu.dao.SaveCustomerDao;
import com.feizhu.domain.Customer;
public class SaveCustomerService {
/**
* 保存客户
* @param c
*/
public void saveCustomer(Customer c) {
//调用SaveCustomerDao
new SaveCustomerDao().saveCustomer(c);
}
}
Dao
package com.feizhu.dao;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.feizhu.domain.Customer;
import com.feizhu.utils.HibernateUtil;
public class SaveCustomerDao {
/**
* 保存客户
* @param c
*/
public void saveCustomer(Customer c) {
//获取session
Session session = HibernateUtil.openSession();
//开启事物
Transaction tr = session.beginTransaction();
//保存用户
session.save(c);
//提交事物
tr.commit();
//关闭资源
session.close();
}
}
HibernateUtil
package com.feizhu.utils;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
// 会话工厂,以单例方式管理
private static SessionFactory sessionFactory;
// ThreadLocal存储session
private static ThreadLocal<Session> session = new ThreadLocal<Session>();
// 以单例方式管理sessionFactory
static {
try {
sessionFactory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
} catch (HibernateException e) {
e.printStackTrace();
throw new HibernateException("初始化会话工厂失败!");
}
}
//得到一个单例的会话工厂
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
//获取一个新session
public static Session openSession(){
return sessionFactory.openSession();
}
//获取当前与线程绑定的session,如果获取不到则创建一个新session并与当前线程绑定
// public static Session getCurrentSession() throws HibernateException {
// //获取当前线程绑定的session
// Session s = (Session) session.get();
// if (s == null) {
// //创建一个新session
// s = sessionFactory.openSession();
// //新session并与当前线程绑定
// session.set(s);
// }
// return s;
// }
public static Session getCurrentSession() throws HibernateException {
return sessionFactory.getCurrentSession();
}
//关闭当前线程绑定的session
// public static void closeSession() throws HibernateException {
// //获取当前线程绑定的session
// Session s = (Session) session.get();
// if (s != null){
// //关闭session
// s.close();
// }
// session.set(null);
// }
public static void closeSession() throws HibernateException {
sessionFactory.getCurrentSession().close();
}
}