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

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

一. 简单的实体类 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表添加了,而且正确的插入了数据


20200615101018668.png


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


20200615101030375.png


生成的数据表:


2020061510104394.png


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


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


20200615101054770.png


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


20200615101106138.png


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


20200615101118236.png


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



相关文章
|
6月前
|
Java
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Action的实现类
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Action的实现类
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Action的实现类
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Action的实现类
|
Java 数据库连接 数据库
Hibernate-操作数据库-类对象插入-2
框架 -2为带有注解的版本,但是总体上是差不多的 teacher类: hibernate.cfg.xml log4j.properties: teacherTest类
115 0
Hibernate-操作数据库-类对象插入-2
|
Java 数据库连接 数据库
Hibernate-操作数据库-类对象插入-1
-1为非带注解版本 框架 工程框架: Student类: hibernate.cfg.xml log4j.properties: Student.hbm.xml StudentTest类: 数据库结构以及表的设计
105 0
Hibernate-操作数据库-类对象插入-1
|
存储 SQL 缓存
Hibernate缓存及核心接口类详解
Hibernate缓存及核心接口类详解
126 0
|
Java 数据库连接
Hibernate注解-类级别注解
Hibernate注解-类级别注解
90 0
|
存储 Java 数据库连接
【SSH快速进阶】——Hibernate继承映射:每个具体类映射一张表
  上篇文章说的是每个类映射一张表,不管是父类还是子类。与上篇文章不同的是,这里是每个“具体类”映射一张表,什么意思呢?就是让每个子类(具体的、有意义的类)映射一张表。
【SSH快速进阶】——Hibernate继承映射:每个具体类映射一张表
|
存储 Java 数据库连接
【SSH快速进阶】——Hibernate继承映射:每个类映射一张表
上文说了每棵继承树映射一张表,本文继续描述让每个类都映射一张表的配置。
【SSH快速进阶】——Hibernate继承映射:每个类映射一张表
|
Java 数据库连接
Hibernate实现简单的CRUD操作和常见类(三)下
Hibernate实现简单的CRUD操作和常见类(三)
120 0
Hibernate实现简单的CRUD操作和常见类(三)下