初次对hibernate封装处理的更新优化记录(萌新)

前提须知

本章仅仅对使用hibernate的方法进行封装处理的优化记录过程。主题步骤主要分3个步骤如下

  1. 初次书写代码 ——————提出修改和修改方案
  2. 更新优化书写代码 ————主要是新添加优化功能
  3. 最后总结————————总结和进一步参考需要

注意:仅仅是记录学习过程。如有更好的方法可以留言。

初次代码

第一次书写hibernate的封装方法,主要分3步骤 1.开启2.服务 3.关闭。

以下是不足之处:

  1. 在修改和删除中没有和查找一样有判断数据库表中是否存在该id的用户,容易报错。(优化)
  2. 没有提供getAllId的方法,即查看所有用户的方法。也可以深入学习根据username中的关键词进行查找。
  3. 添加id的方式没有好好优化,可以优先空出部分的id先填入。(可以不用书写代码,方法和getAll类似,先找到空id再添加id,username,password,最后上交)

参考代码如下:

package com.test.dao;

import com.test.model.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

/**
 * @author 空Dian
 */
public class Hibernate {
    /**
    * 初始化变量
    */
    Configuration configuration=null;
    SessionFactory sessionFactory=null;
    Session session=null;
    Transaction transaction=null;
    /**
    *开始启动hibernate服务
    */
    public void init(){
        configuration=new Configuration().configure();          //实体化配置文件
        sessionFactory=configuration.buildSessionFactory();     //获取session工厂
        session=sessionFactory.openSession();                   //打开session工厂
        transaction=session.beginTransaction();                 //开始事务
    }
    /**
     *添加用户
     */
    public void add(String username,String password){
        User user=new User();
        user.setUsername(username);
        user.setPassword(password);
        session.save(user);
        transaction.commit();
        transaction=session.beginTransaction();
    }
    /**
     *修改ID为id的用户
     */
    public void update(long id,String username,String password){
        User user=(User) session.get(User.class,new Long(id));
        user.setUsername(username);
        user.setPassword(password);
        session.update(user);
        transaction.commit();
        transaction=session.beginTransaction();
    }
    /**
     *查找ID为id的用户
     */
    public void getById(long id){
        User user=(User) session.get(User.class,new Long(id));
        if(user==null){
            System.out.println("id为"+id+"的用户不存在");
        } else{
            session.update(user);
            transaction.commit();
            System.out.println("ID:"+user.getId()+" 用户名:"+user.getUsername());
            transaction=session.beginTransaction();
        }
    }
    /**
     *删除ID为id的用户
     */
    public void delete(long id){
        User user=(User) session.get(User.class,new Long(id));
        session.delete(user);
        transaction.commit();
        transaction=session.beginTransaction();
    }
    /**
     *关闭hibernate服务
     */
    public void close(){
        transaction.commit();
        if(session!=null){
            session.close();
            session=null;
        }
        if(sessionFactory!=null){
            sessionFactory.close();
        }
        if(configuration!=null){
            configuration=null;
        }
    }
}

更新优化之后代码如下:
注意: 本次操作优化了跳过id为空的用户,即数据库删除后造成id空出现象。有待提高,没有显示id为空的地方(如果有必要再进行修改更进方法else输出)。

/**
 *查找ID为id及id之前的用户
 */
public void getAllId(long id){
    for(long i=1;i<=id;i++) {
        User user=(User) session.get(User.class,new Long(i));
        if(user!=null){
            session.update(user);
            transaction.commit();
            System.out.println("ID:"+user.getId()+" 用户名:"+user.getUsername());
            transaction=session.beginTransaction();
        }
    }
}

总结:

  1. 本次操作仅使用与后台使用操作,不适合与前端联动操作。即虽然有初次学习借鉴性,有待提高与前端联动性。
  2. 查找所有人的方式还是不能好,虽然后台可以查看数据库所有人即最大id,但是还不够智能需要手动查看。
  3. 备注信息太少不利于他人(萌新)参考借鉴。

猜你喜欢

转载自blog.csdn.net/cn89214/article/details/89328545