hibernate的增删改查

坚持每天写博文,积累下开发中的点点滴滴
我先写一个公共类用于获得session

public class  HibernateUtils {
    //类加载的时候就会运行 属性和代码块
    private static SessionFactory sessionFactory;
    static{
        try {
            Configuration configuration = new Configuration().configure();
            sessionFactory = configuration.buildSessionFactory();
        } catch (Exception e) {
            System.out.println("加载配置文件或者映射文件出现错误:"+e.getMessage());
        }
    }
    public static Session getSession(){
        if(sessionFactory != null){
            return sessionFactory.openSession();
        }
        return null;
    }
}

在这里我用了一个静态代码块来创建SessionFactory,为什么不在方法中进行实例化呢,因为我只需要一个SessionFactory对象,如果放在方法中每次使用都会创建出来一个。

  • 增:
private void doSave(){
        //实例化对象
        User user = new User();
        user.setUser_name("user_name");
        user.setUser_passWord("user_passWord");
        //实例化配置对象
        Configuration concfg = new Configuration();
        //解析配置文件 
        concfg.configure();//默认加载hibernate.cfg.xml
        /**
         * 此方法用于改变默认配置文件
         *//*
        concfg.configure("改变配置文件名称");*/

        //获取sessionFactory对象    过时的方法buildSessionFactory()也可以用
        //新的方法从bibernate4.1开始需要传进去一个参数
        SessionFactory sessionFactory = concfg.buildSessionFactory();
        //获取session对象 两个方法:getCurrentSession()和openSession() 测试都有open
        Session session = sessionFactory.openSession();
        //开启事务
        Transaction transaction = session.beginTransaction();
        //保存
        session.save(user);
        //提交事务
        transaction.commit();
        //关闭资源
        session.close();
        sessionFactory.close();
    }

增加的方法我并没有使用工具类

  • 删:
 public void delete(){
        User user = new User();
        user.setUser_id(3L);
        Session session = HibernateUtils.getSession();
        session.beginTransaction();
        session.delete(user);//参数必须是一个有id值得domain对象
        session.getTransaction().commit();
        session.close();
    }

删除时需要给定一个ID

 public void update(){
        User user = new User();
        user.setUser_id(2L);//修改需要给定一个ID
        user.setUser_name("updateName");
        user.setUser_passWord("updatePassWord");
        Session session = HibernateUtils.getSession();
        //开启事务 获取事务并提交 关闭资源
        session.beginTransaction();
        session.update(user);
        session.getTransaction().commit();
        session.close();
    }

同样,修改时也需要给一个ID

  • 查:
 public void select(){
        Session session = HibernateUtils.getSession();
        User user = (User)session.get(User.class, 2L);
        System.out.println(user);
        session.close();
    }

用session.get()方法需要传入一个domain.class和一个ID,返回一个Object类型
注意增删改必须有事务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值