Hibernate开发(二)

提取出Session工具类:

package com.util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
    /*
     *  一个项目只能用一个SessionFactory对象
     */

public class HibernateUtil {
    public static final Configuration cfg;
    public static final SessionFactory sf;
    static {
        cfg = new Configuration().configure();
        sf=cfg.buildSessionFactory();
    }

    public static Session openSession(){
        return sf.openSession();
    }
}

实现基础的CRUD操作:

package com.test;

import com.bean.Customer;
import com.util.HibernateUtil;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.query.Query;
import org.junit.Test;

import java.util.List;

public class DemoHibernate {

    @Test
    public void demo1(){
        //  1.加载hibernate核心配置文件
        Configuration configuration = new Configuration().configure();
        //  2.创建一个SessionFactory对象(类似于JDBC连接池)
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        //  3.通过SessionFactory获取到Session对象(类似于JDBC中的Connection)
        Session session=sessionFactory.openSession();
        //  4.手动开启事务
        Transaction transaction = session.beginTransaction();
        //  5.编写代码
        Customer customer = new Customer();
        customer.setCust_name("赵云02");
        session.save(customer);
        //  6.提交事务
        transaction.commit();
        //  7.释放资源
        session.close();
    }

    //插入元素
    @Test
    public void save(){
        Session session = HibernateUtil.openSession();
        Transaction transaction = session.beginTransaction();
        //  5.编写代码
        Customer customer = new Customer();
        customer.setCust_name("钱进");
        session.save(customer);
        //  6.提交事务
        transaction.commit();
        //  7.释放资源
        session.close();
    }

    //查询单个
    @Test
    public void query(){
        Session session = HibernateUtil.openSession();
        Transaction transaction = session.beginTransaction();

        //get 和 load 只能根据id来查询某个对象,get(类.class,id);同时get和load有区别
        Customer customer = session.get(Customer.class,1l);
        System.out.println(customer);

        transaction.commit();
        session.close();
    }

    //根据相关属性查询
    @Test
    public void queryBySome(){
        Session session = HibernateUtil.openSession();
        Transaction transaction = session.beginTransaction();

        //下面写的是HQL查询语句
        Query query= session.createQuery("from Customer as c where c.cust_name like :name");
        query.setParameter("name","%云%");
        List<Customer> list = query.list();
        for (Customer c:list) {
            System.out.println(c);
        }

        transaction.commit();
        session.close();
    }

    //查询所有
    @Test
    public void queryAll(){
        Session session = HibernateUtil.openSession();
        Transaction transaction = session.beginTransaction();

        //下面写的是HQL查询语句
        Query query= session.createQuery("from Customer");
        List<Customer> list = query.list();
        System.out.println("这是HQL查询:------"+list);
        Query query1=session.createSQLQuery("select * from customer");
        List<Customer> list1 =query.list();
        System.out.println("这是SQL查询:----------"+list1);

        transaction.commit();
        session.close();
    }

    //根据id更新
    @Test
    public void update(){
        Session session = HibernateUtil.openSession();
        Transaction transaction = session.beginTransaction();

        //get 和 load 只能根据id来查询某个对象,get(类.class,id);同时get和load有区别
        Customer customer = session.get(Customer.class,1l);
        //Hibernate的get和load方法查询出的实体都是持久化对象,
        // 拿到该对象后,如果你调用了该对象的set方法,那么在事务递交的时候,Hibernate会把你设置的值自动更新到数据库中。
        session.evict(customer);    //将对象从session中拆离,执行setCust_name("马云01")不会更新数据库,不加这句就会直接更新数据库。如果不写这句,也不需要些update
        customer.setCust_name("马云01");
        session.update(customer);

        transaction.commit();
        session.close();
    }

    //删除
    @Test
    public void delete(){
        Session session = HibernateUtil.openSession();
        Transaction transaction=session.beginTransaction();

        Customer customer = session.get(Customer.class,8l);
        session.delete(customer);
        transaction.commit();
        session.close();
    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值