JPA(Java Persistence API)学习五(实体和表CRUD功能)
1.示例(查询)--要找到一个实体,EntityManger
接口提供了find()
方法,该方法根据主键搜索一个元素。
EntityManagerFactory emf = Persistence.createEntityManagerFactory("Student_details");
System.out.println("Student Name = " + s.getS_name());
System.out.println("Student Age = " + s.getS_age());
2.示例(更新set)
概述:当实体正在被容器管理时,你可以调用实体的set方法对数据进行修改,
在容器决定flush时(这个由Container自行判断),更新的数据 才会同步到数据库,
而不是在调用了set方法对数据进行修改后马上同步到数据库。
如果你希望修改后的数据马上同步到数据库,你可以调用 EntityManager.flush()方法。
代码:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("Student_details");
System.out.println("Before Updation");
System.out.println("Student id = " + s.getS_id());
System.out.println("Student Name = " + s.getS_name());
System.out.println("Student Age = " + s.getS_age());
System.out.println("Student id = " + s.getS_id());
System.out.println("Student Name = " + s.getS_name());
System.out.println("Student Age = " + s.getS_age());
try {
em.merge(person);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
Person person = persondao.getPersonByID(1); //此时的person 已经脱离容器的管理
person.setName("张小艳");
persondao.updatePerson(person);
当ID在数据库中不能找到时,用update的话肯定会报异常,然而用merge的话,就会insert。
当ID在数据库中能找到的时候,update与merge的执行效果都是更新数据,发出update语句;
如果没有设置ID的话,则这个对象就当作瞬态处理:
用update的话,由于没有ID,所以会报异常,merge此时则会保存数据,根据ID生产策略生成一条数据;
6.删除
EntityManager
接口提供remove()
方法。remove()
方法使用主键来删除特定的记录EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
StudentEntity s = em.find(StudentEntity.class, 1001);
em.remove(s);
em.getTransaction().commit();
em.close();
emf.close();
学习来源:https://blog.csdn.net/asdfsadfasdfsa/article/details/79452521
https://www.yiibai.com/jpa/jpa-collection-mapping.html#article-start