Hibernate实现简单的CRUD操作和常见类(三)

勿以恶小而为之,勿以善小而不为--------------------------刘备
劝诸君,多行善事积福报,莫作恶

上一章简单介绍了Hibernate中hibernate.cfg.xml文件和Xxx.hbm.xml文件的详细解释(二),如果没有看过,请观看上一章

一. 简单的实体类 POJO规则

写一个简单的User表的CRUD操作

其中关于实体类User有以下几点规则需要注意:

  1. 属性必须私有,用private 进行修饰。

  2. 实现属性对应的setter和getter方法。

  3. 具有唯一标识符,一般为id.

  4. 建议使用包装类型,如Integer, 而不是使用原始类型 int. 如学生考试时的区别。

  5. 建议实体类实现序列化接口,Serializable 。

  6. 实体类最好不要用final 关键字进行修饰。

二. 实现 实体的CRUD 操作

二.一 新建Hibernate工具类 HibernateUtils.java

HibernateUtils.java

package com.yjl.util;

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

/**
 @author: 两个蝴蝶飞
 @date: 2018年10月8日 下午8:43:29
 @Description SessionFactory的工具类
*/
public class HibernateUtil {
	/**
	 * @param configuration 配置
	 * @param sessionFactory session工厂
	 */
	private static Configuration configuration;
	private static SessionFactory sessionFactory=null;
	//私有化
	private HibernateUtil(){
		
	}
	/*
	 * 得到sessionFactory对象
	 */
	public static SessionFactory getSessionFactory(){
		if(sessionFactory==null){
			configuration=new Configuration();
			configuration.configure();
			sessionFactory=configuration.buildSessionFactory();
		}
		return sessionFactory;
	}
	/*
	 * 得到session对象
	 */
	public static Session getSession(){
		return getSessionFactory().openSession();
	}
	//测试一下
	public static void main(String []args){
		System.out.println(getSession());
	}
}

SessionFactory是单实例的,整个Hibernate运行项目期间只生成一个,用单例模式生成!!!. 注意这点。

二.二 插入的测试 save

@Test
	public void saveTest(){
		//1  得到Session对象
		Session session=HibernateUtil.getSession();
		//2 打开事务
		Transaction tran=session.beginTransaction();
		//3 实例化对象
		User user=new User();
		user.setUserName("两个蝴蝶飞");
		user.setSex("男");
		user.setAge(24);
		user.setPassword("123456");
		user.setDescription("一个有梦想的程序员");
		//4利用save()方法进行相应的保存
		session.save(user);
		//5 提交事务
		tran.commit();
		//6 关闭session
		session.close();
	}

运行后查看数据库,发现user表添加了,而且正确的插入了数据

在这里插入图片描述

上面主键的生成策略是,native .即:

 <id name="id" column="id">
		<generator class="native"></generator>	
</id>

如果转换成UUID形式的,需要将id先转换成String类型为uid,生成setter和getter方法:

User.java中:

private String uid;
	public String getUid() {
		return uid;
	}
	public void setUid(String uid) {
		this.uid = uid;
	}

相应的配置 User.hbm.xml中: 转换成uuid

                <id name="uid" column="uid">
			<generator class="uuid"></generator>	
		</id>

重新执行上面的saveTest()方法,进行测试

在这里插入图片描述

生成的数据表:

在这里插入图片描述

二.三 简单查询的测试 get()

       @Test
	public void getTest(){
		Session session=HibernateUtil.getSession();
		User user=session.get(User.class,1);
		System.out.println(user.getUserName()+"----"+user.getDescription());
	}

在这里插入图片描述

二.四 简单修改的测试 update()

	@Test
	public void updateTest(){
		//1  得到Session对象
		Session session=HibernateUtil.getSession();
		//2 打开事务
		Transaction tran=session.beginTransaction();
		//3 得到对象
		User user=session.get(User.class,1);
                if(user!=null){
                    user.setAge(26);
		    user.setDescription("要做一个高级程序员");
		    //4利用save()方法进行相应的保存
		    session.update(user);
                }
		//5 提交事务
		tran.commit();
		//6 关闭session
		session.close();
	}

在这里插入图片描述

二.五 简单删除的测试 delete()

@Test
	public void deleteTest(){
		//1  得到Session对象
		Session session=HibernateUtil.getSession();
		//2 打开事务
		Transaction tran=session.beginTransaction();
		//3 得到对象
		User user=session.get(User.class,1);
		//4 如果存在,就进行删除
		if(user!=null){
			session.delete(user);
		}
		//5 提交事务
		tran.commit();
		//6 关闭session
		session.close();
	}

在这里插入图片描述

这就是一个实体的简单的 CRUD 操作演示。

三. Hibernate 框架的常见类

三.一 Hibernate 中Configurate 类

在这里插入图片描述

所用到的:

 configuration=new Configuration();
configuration.configure();
sessionFactory=configuration.buildSessionFactory();

其中:

public Configuration()
  {
        //调用类加载进行创建
        this(new BootstrapServiceRegistryBuilder().build());
  }

 public Configuration configure()
/*     */     throws HibernateException
/*     */   {
               //名称为hibernate.cfg.xml, 不能变,是固定值
/* 244 */     return configure("hibernate.cfg.xml");
/*     */   }

三.二 Hibernate中的SessionFactory类

在这里插入图片描述

//创建sessionFactory对象
public SessionFactory buildSessionFactory()
/*     */     throws HibernateException
/*     */   {
/* 724 */     log.debug("Building session factory using internal StandardServiceRegistryBuilder");
/* 725 */     standardServiceRegistryBuilder.applySettings(properties);
/* 726 */     return buildSessionFactory(standardServiceRegistryBuilder.build());
/*     */   }

SessionFactory中的主要方法:

在这里插入图片描述

三.三 Hibernate中的Session类

在这里插入图片描述
在这里插入图片描述

常用方法:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三.四 Hibernate中的Transaction类

在这里插入图片描述

在这里插入图片描述

其中EntityTransaction 类:

在这里插入图片描述

其中,添加save(), 更新 update(), 删除delete() ,是需要事务操作的,不要忘记 tran.commit(); 提交事务。

查询get() 是不需要事务操作的。

注意,不要忘记关闭Session . session.close(); 关闭。


谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!

posted @ 2020-06-16 07:40  两个蝴蝶飞  阅读(176)  评论(0编辑  收藏  举报