JPA的JPQL(JPA Query Language,JPA查询语言)不仅可以检索数据,还可以用于进行批量更新、删除和插入数据。批量操作实际上直接在数据库中完成,所处理的数据不会被保存在Session的持久化缓存中,因此不会占用内存空间。
Query.executeUpdate()方法和JDBC API中的PreparedStatement.executeUpdate()很相似,前者执行用于更新、删除和插入的JPQL语句,而后者执行用于更新、删除和插入的SQL语句。
1.批量更新数据
以下程序代码演示通过JPQL来批量更新Customer对象:
tx = entityManager.getTransaction();
tx.begin();
String jpqlUpdate ="update Customer c set c.name = :newName"
+" where c.name = :oldName";
int updatedEntities = entityManager.createQuery( jpqlUpdate )
.setParameter( "newName", "Mike" )
.setParameter( "oldName",