美文网首页
2019-10-16Jpa的增删改查

2019-10-16Jpa的增删改查

作者: 卡布奇诺_7828 | 来源:发表于2019-10-16 13:46 被阅读0次
package com.shenyue.controller;

import com.shenyue.bean.Customer;
import com.shenyue.utils.JpaUtils;
import org.junit.jupiter.api.Test;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;

public class JpaTest {
/*
    测试jpa的保存
        案例:保存一个客户到数据库中
    jpa的操作步骤
        1.加载配置文件创建工厂(实体管理类工厂)对象
        2.通过实体管理类工厂获取实体管理器
        3.获取事务对象,开启事务
        4.完成增删改查操作
        5.提交事务(回滚事务)
        6.释放资源
* */
@Test
    public void  testSave(){
//        //1.加载配置文件创建工厂(实体管理器工厂)对象
//    EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJpa");
////        2.通过实体类管理器工厂获取实体管理器
//    EntityManager em = factory.createEntityManager();
    EntityManager em=  JpaUtils.getEntityManager();
//        3.获取事务对象,开启事务
    EntityTransaction tx = em.getTransaction();
    tx.begin();//开启事务
//        4.完成增删改查操作:保存一个客户到数据库中
    Customer customer = new Customer();
    customer.setCustName("SS1111");
    customer.setCustIndustry("教育");
//    保存
    em.persist(customer);//保持操作

//        5.提交操作
    tx.commit();
//        6.释放资源
    em.close();
//    factory.close();
    }
    /*
    * 根据ID查询用户
    * 使用find方法查询:
    *   1.查询的对象就是当前客户对象本身
    *   2.在调用find方法的时候,就会发送sql语句查询数据库
    * */
    @Test
    public void testFind(){
        //1.通过工具类获取EntityManager
        EntityManager em = JpaUtils.getEntityManager();
//        2.开启事务
        EntityTransaction tx = em.getTransaction();
        tx.begin();
//        3.增删改查---根据用户ID查询用户
        /*
        * find:根据ID查询数据
        *       class:查询数据的结果需要包装的实体类类型的字节码
        *       id:查询的主键的取值
        * */
        Customer customer = em.find(Customer.class, 1l);
        System.out.println(customer);
//        4.提交用户
        tx.commit();
//        5.释放资源
        em.close();
    }

    /*
     * 根据ID查询用户
     *      getReference方法
     *          1.获取的对象是动态代理对象
     *          2.调用getReference方法不会立即发送sql语句查询数据库
     *              *当调用查询结果对象的时候,才会发送查询的sql语句:什么时候用,什么时候发送sql语句查询数据库
     *延迟加载(懒加载)
     *        *得到的是一个动态代理对象
     *         *什么时候用,什么时候才会查询
     * */
    @Test
    public void testReference(){
        //1.通过工具类获取EntityManager
        EntityManager em = JpaUtils.getEntityManager();
//        2.开启事务
        EntityTransaction tx = em.getTransaction();
        tx.begin();
//        3.增删改查---根据用户ID查询用户
        /*
         * find:根据ID查询数据
         *       class:查询数据的结果需要包装的实体类类型的字节码
         *       id:查询的主键的取值
         * */
        Customer customer = em.getReference(Customer.class, 1l);
        System.out.println(customer);
//        4.提交用户
        tx.commit();
//        5.释放资源
        em.close();
    }
/*
* 删除一个客户的案例
* */
    @Test
    public void testRemove(){
        //1.通过工具类获取EntityManager
        EntityManager em = JpaUtils.getEntityManager();
//        2.开启事务
        EntityTransaction tx = em.getTransaction();
        tx.begin();
//        3.增删改查---根据用户ID查询用户
        /*
        * 根据id查询用户
        * 调用remove方法完成删除操作
        * */
        Customer customer = em.find(Customer.class, 1l);
        em.remove(customer);
//        4.提交用户
        tx.commit();
//        5.释放资源
        em.close();
    }
/*
* 更新用户的操作
*           merge(Object)
* */
    @Test
    public void testUpdata(){
        //1.通过工具类获取EntityManager
        EntityManager em = JpaUtils.getEntityManager();
//        2.开启事务
        EntityTransaction tx = em.getTransaction();
        tx.begin();
//        3.增删改查---根据用户ID查询用户
        /*
         * 根据id查询用户
         * 更新客户
         * */
        Customer customer = em.find(Customer.class, 2l);
        customer.setCustIndustry("银子");
        em.merge(customer);
//        4.提交用户
        tx.commit();
//        5.释放资源
        em.close();
    }
}

相关文章

  • mysql的插入语句

    MySQL增删改查之增insert、replace

  • MYSQL数据库的增删改查

    MYSQL数据库的增删改查 一.对于库的增删改查 增create database 库名称;create data...

  • 关于python的list的增查删改

    说到增查删改,想起了数据库,我们在关系型数据库当中就会对表进行增查删改。 在python当中我们也可以对list进...

  • 2019-10-16Jpa的增删改查

  • 0812 A

    mongodb 增删改查 增: db.createCollection("name", {options:numb...

  • 增删改

    对于表中的操作,就是增删改查,查内容较多,这里先说增删改。 1.增(insert或者load) 即插入数据,多行插...

  • SQL查询结构总结

    SQL 增删改查 对数据库有修改的操作是:增删改 增 insert into 表名 values(); 删 del...

  • 2018-03-03

    rails c增删改查 增:user = User.create(name:'Jack', age:'18') 删...

  • 函数和增删改查(运用)

    增删改查 (基本命令) 1 . 增 inset(position,value)append(value)exten...

  • 表内容的操作

    对表数据进行增删改查(curd) 增(insert into): auto_increment自增长 SELECT...

网友评论

      本文标题:2019-10-16Jpa的增删改查

      本文链接:https://www.haomeiwen.com/subject/afzymctx.html