Hibernate入门(四)Hibernate增删改查

版权声明:程序猴jwang版权所有 https://blog.csdn.net/qq_21046965/article/details/86599687

前言

      本章讲解Hibernate的增删改查

方法

1.构建获取Session的工具方法

如同我们第一次使用JDBC的时候和MyBatis的时候,connection对象和SqlSession对象都要经过一个工具类进行获取,那么单独使用Hibernate的时候也不例外!
这里我给一个例子:

package cn.edu.ccut.util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

/**
 * @Auther:jwang
 * @Date:2019/1/22
 * @Description:cn.edu.ccut.util
 * @Version 1.0
 **/
public class DBUtil {

    private static SessionFactory sessionFactory = null;
    private static Session session = null;

    static {
        //加载配置文件,默认src下的hibernate.cfg.xml
        Configuration configiguration = new Configuration().configure();
        //启动服务
        ServiceRegistry registry = new ServiceRegistryBuilder().applySettings(configiguration.getProperties()).buildServiceRegistry();
        //创建SessionFactory对象
        sessionFactory = configiguration.buildSessionFactory(registry);
    }

    public static Session getSession(){
        if(session == null){
            session = sessionFactory.openSession();
        }
        return session;
    }


    public static void close(){
        if(session != null){
            session.close();
        }
    }

}

这个时候我们的测试类就可以这么写:

import cn.edu.ccut.bo.User;
import cn.edu.ccut.util.DBUtil;
import org.hibernate.Session;
import org.junit.Test;

/**
 * @Auther:jwang
 * @Date:2019/1/20
 * @Description:PACKAGE_NAME
 * @Version 1.0
 **/
public class HibernateTest {

    @Test
    public void testHibernateConfig() throws Exception{
        //创建Session对象
        Session session = DBUtil.getSession();
        //查询Users表的内容
        User user = (User) session.get(User.class,"admin");
        System.out.println(user);
        DBUtil.close();
    }
}

2.增删改查

特别的:查询操作在例子中已经明确的写出来了,这里就不过多的去说了!

1)增加

在Hibernate中增加的操作我们需要开启事务,相信大家对事务已经理解了!

在之前我们一直拿User类作为查询使用,它存储了用户登录的相关信息,如果需要增加操作,则实体类需要修改如下:

package cn.edu.ccut.bo;

public class User {
	private String id;
	private String username;
	private String password;

    public User() {
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

测试类编写如下:

import cn.edu.ccut.bo.User;
import cn.edu.ccut.util.DBUtil;
import org.hibernate.Session;
import org.junit.Test;

/**
 * @Auther:jwang
 * @Date:2019/1/20
 * @Description:PACKAGE_NAME
 * @Version 1.0
 **/
public class HibernateTest {

    @Test
    public void testHibernateConfig() throws Exception{
        //创建Session对象
        Session session = DBUtil.getSession();
        //开启事务
        session.beginTransaction();
        //增加User
        User user = new User();
        user.setUsername("jwang");
        user.setPassword("jwang");
        session.save(user);
        //提交事务
        session.getTransaction().commit();
        DBUtil.close();
    }
}

特别的:我们需要开启事务和提交事务!

2)修改

修改的话和增加差不多,测试类编写如下:

import cn.edu.ccut.bo.User;
        import cn.edu.ccut.util.DBUtil;
        import org.hibernate.Session;
        import org.junit.Test;

/**
 * @Auther:jwang
 * @Date:2019/1/20
 * @Description:PACKAGE_NAME
 * @Version 1.0
 **/
public class HibernateTest {

    @Test
    public void testHibernateConfig() throws Exception{
        //创建Session对象
        Session session = DBUtil.getSession();
        //开启事务
        session.beginTransaction();
        //查找User
        User user = (User)session.get(User.class, "1");
        user.setPassword("sa");
        //修改User
        session.update(user);
        //提交事务
        session.getTransaction().commit();
        DBUtil.close();
    }
}

3)删除

删除同样要开启事务并提交!

特别的:除了查询都需要开启事务,提交事务

import cn.edu.ccut.bo.User;
        import cn.edu.ccut.util.DBUtil;
        import org.hibernate.Session;
        import org.junit.Test;

/**
 * @Auther:jwang
 * @Date:2019/1/20
 * @Description:PACKAGE_NAME
 * @Version 1.0
 **/
public class HibernateTest {

    @Test
    public void testHibernateConfig() throws Exception{
        //创建Session对象
        Session session = DBUtil.getSession();
        //开启事务
        session.beginTransaction();
        //增加User
        User user = (User)session.get(User.class, "1");
        session.delete(user);
        //提交事务
        session.getTransaction().commit();
        DBUtil.close();
    }
}

到这里,我们hibernate原生的增删改查就是这样了!

猜你喜欢

转载自blog.csdn.net/qq_21046965/article/details/86599687