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

上一章简单介绍了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表添加了,而且正确的插入了数据

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

上面主键的生成策略是,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()方法,进行测试

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

生成的数据表:

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

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

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

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

二.四 简单修改的测试 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();
}

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

二.五 简单删除的测试 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();
}

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

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

三. Hibernate 框架的常见类

三.一 Hibernate 中Configurate 类

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

所用到的:

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类

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

//创建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实现简单的CRUD操作和常见类(三)_Hibernate入门_09

三.三 Hibernate中的Session类

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


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

常用方法:

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


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

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

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

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

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


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


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

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

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

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

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

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

三.四 Hibernate中的Transaction类

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

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

其中EntityTransaction 类:

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

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

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

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



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