Hibernate3对数据进行增删改操作

以下操作是在Junit测试中完成的
1.新建一个工具类,用来获得SessionFactory和 session,示例代码:

package com.gx.util;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;

public class HibernateSessionFactory {
    
    
   
	private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
    private static org.hibernate.SessionFactory sessionFactory;
	
    private static Configuration configuration = new Configuration();
    private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
    private static String configFile = CONFIG_FILE_LOCATION;

	static {
    
    
    	try {
    
    
			configuration.configure(configFile);
			sessionFactory = configuration.buildSessionFactory();
		} catch (Exception 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();
		} catch (Exception 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;
	}
}

2.在 Hibernate中新增数据,示例代码:

/*新增一定要开启事务*/
@Test
public void testInsert() throws ParseException{
    
    
	//1获取session
	Session session=HibernateSessionFactory.getSession();
	//2获取事务
	Transaction transaction=session.getTransaction();
	//3开启事务
	transaction.begin();
	
	User user=new  User();
	user.setUsername("testInsert");
	user.setPassword("123");
	user.setSex(true);
	user.setCreatetime(new Date());
	user.setPowerid(1);
	
	session.save(user);
	//提交事务
	transaction.commit();
	//关闭session
	session.close();
}

运行结果截图:
在这里插入图片描述

2.修改数据
Hibernate对数据进行修改分为3步,先把需要修改的数据查询出来,然后更新数据,最后保存修改后的数据到数据库。示例代码:

/*修改需要开启事务*/
@Test
public void testUpdate(){
    
    
	//1获取session
	Session session=HibernateSessionFactory.getSession();
	//2获取事务
	Transaction transaction=session.getTransaction();
	//3开启事务
	transaction.begin();
	
	//查询需要修改的数据
	User user=(User) session.get(User.class, 39);
       //修改数据
	user.setUsername("testUpdate");
	
	//把修改后的数据保存到数据库
	session.update(user);
	transaction.commit();
	//关闭session
	session.close();
}

运行结果截图:

在这里插入图片描述

3.删除数据
Hibernate中删除数据分为两步,首先查询出需要修改的数据,然后删除数据。示例代码:

/*删除需要开启事务*/
@Test
public void testDelete(){
    
    
	//1获取session
	Session session=HibernateSessionFactory.getSession();
	//2获取事务
	Transaction transaction=session.getTransaction();
	//3开启事务
	transaction.begin();
	
	//查询需要删除的数据
	User user=(User) session.get(User.class, 39);
	
	//删除数据
	session.delete(user);
	
	transaction.commit();
	session.close();
}

运行结果截图,id为39的数据已经删除:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44547592/article/details/108460553