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语句进行查询数据库

测试更新操作:

测试结果:控制台输出

数据库中的数据结果:

测试删除操作:

控制台的输出

数据库删除后的结果:

猜你喜欢

转载自www.cnblogs.com/phantom576/p/11965969.html