zoukankan      html  css  js  c++  java
  • jpa实现增删改查

    为了简化操作 我们自己去编写一个工具类JpaUtils
    public class JpaUtils {
    private static EntityManagerFactory factory;
    static {
    factory = Persistence.createEntityManagerFactory("myJpa");
    }
    public static EntityManager getEntityManager(){
    return factory.createEntityManager();
    }
    }
    解释一下:在第一次调用getEntityManager方法的时候 会加载静态代码块里面的内容创建实体管理工厂 然后再调用方法通过工厂获取EntityManager这个实体管理类
    在以后的调用种直接通过工厂进行获取
    案例一:查询
    直接书写测试类进行测试:

    测试结果:

    注意这里有一点需要注意:就是前面的配置文件中有一处要进行修改:

    create要修改成update 不然的话 数据库中存在表就会被删除 就会报错
    还有另外一种查询方式:

    测试结果:

    那两种方式有什么区别??
    我们打上断点进行测试:第一种方法testFind

    点击下一步:快捷键f8

    出现了sql语句(立即加载模式)

    对象就是实体类本身
    测试第二种方法testReference() 打上断点:


    这种方法获取的是代理对象
    find()方法查询 查询的是当前对象本身 在调用find()方法的时候 就会发送sql语句查询数据库
    getReference()方法 获取的对象是一个动态代理对象 调用getReference方法不会立即发送sql语句查询数据库 当调用查询结果对象的时候 才会发送sql语句 什么时候用 什么时候发送sql语句进行查询数据库

    测试更新操作:

    测试结果:控制台输出

    数据库中的数据结果:

    测试删除操作:

    控制台的输出

    数据库删除后的结果:

  • 相关阅读:
    Ubuntu下成功安装台式机网卡realtek的rtl8188eu芯片驱动并实现AP功能
    背包问题九讲笔记_01背包(转)
    Ubuntu 12.04 LTS 中文输入法的安装 (转载)
    ubuntu扩展屏幕
    模拟————找规律
    数学——费马小定理、快速幂,组合数
    DP———1.最大子连续子序列和
    FOJ ——Problem 1759 Super A^B mod C
    POJ
    CSU 2136 ——湖南多校对抗赛 I
  • 原文地址:https://www.cnblogs.com/phantom576/p/11965969.html
Copyright © 2011-2022 走看看