在此示例中,您将学习如何在JPA中更新实体对象。我们使用该EntityManager.merge()方法来更新实体。此方法将要保存的实体作为参数,然后将合并的实体作为结果返回。

您可以在下面的代码片段中看到一个简单的示例。这是用于运行ArtistDao类以更新数据库中的艺术家数据的主程序。package org.nhooo.example.jpa;

import org.nhooo.example.jpa.dao.ArtistDao;

import org.nhooo.example.jpa.dao.impl.ArtistDaoImpl;

import org.nhooo.example.jpa.entity.Artist;

import javax.persistence.EntityManager;

import javax.persistence.EntityManagerFactory;

import javax.persistence.Persistence;

public class EntityUpdateDemo {

public static final String PERSISTENCE_UNIT_NAME = "music";

public static void main(String[] args) {

EntityManagerFactory factory =

Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);

EntityManager em = factory.createEntityManager();

ArtistDao dao = new ArtistDaoImpl(em);

Artist artist = dao.findById(1L);

System.out.println("Artist = " + artist);

artist.setName("Bon Jovi");

dao.update(artist);

artist = dao.findById(artist.getId());

System.out.println("Artist = " + artist);

}

}

该ArtistDao接口及其实现ArtistDaoImpl类的定义。package org.nhooo.example.jpa.dao;

import org.nhooo.example.jpa.entity.Artist;

import java.util.List;

public interface ArtistDao {

Artist findById(Long id);

void save(Artist artist);

void update(Artist artist);

List getArtists();

}package org.nhooo.example.jpa.dao.impl;

import org.nhooo.example.jpa.dao.ArtistDao;

import org.nhooo.example.jpa.entity.Artist;

import javax.persistence.EntityManager;

import javax.persistence.EntityNotFoundException;

import javax.persistence.Query;

import java.util.List;

public class ArtistDaoImpl implements ArtistDao {

private EntityManager manager;

public ArtistDaoImpl(EntityManager manager) {

this.manager = manager;

}

/**

* Find Artist based on the entity Id.

*

* @param artistId the artist Id.

* @return Artist.

* @throws EntityNotFoundException when no artist is found.

*/

public Artist findById(Long artistId) {

Artist artist = manager.find(Artist.class, artistId);

if (artist == null) {

throw new EntityNotFoundException("Can't find Artist for ID "

+ artistId);

}

return artist;

}

@Override

public void save(Artist artist) {

manager.getTransaction().begin();

manager.persist(artist);

manager.getTransaction().commit();

}

/**

* Update Artist information.

*

* @param artist an Artist to be updated.

*/

@Override

public void update(Artist artist) {

manager.getTransaction().begin();

manager.merge(artist);

manager.getTransaction().commit();

}

@Override

@SuppressWarnings(value = "unchecked")

public List getArtists() {

Query query = manager.createQuery("select a from Artist a", Artist.class);

return query.getResultList();

}

}

Maven依赖

javax.persistence

javax.persistence-api

2.2

org.hibernate

hibernate-core

5.4.1.Final

mysql

mysql-connector-java

5.1.47

java jpa更新数据_Java如何使用JPA更新实体对象?相关推荐

  1. java原子更新类_Java内部具有原子更新的动态热交换环境

    java原子更新类 有人可能会争辩说上述标题可以简称为OSGi ,我想在一开始就放弃这种思考过程. 对于OSGi而言,这没有什么冒犯的,它是一个很棒的规范,在实现层或可用性层上都搞砸了,这就是我对OS ...

  2. java批量处理数据_Java批量处理数据

    要求:共1000条数据,第一次批量插入100条,第二次批量插入101到200条,依次插入数据: 实现方式这里选择了两种常用的方式,都是使用List操作: 第一种实现思路如下: <1> 原先 ...

  3. java解析json数据_java解析JSON数据详解

    JSON是目前最流行的轻量级数据交换语言(没有之一).尽管他是javaScript的一个子集.但由于其是独立与语言的文本格式,它几乎可以被所有编程语言所支持. 以下是对java语言中解析json数据的 ...

  4. java 多线程 共享数据_JAVA多线程提高四:多个线程之间共享数据的方式

    多个线程访问共享对象和数据的方式 如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如,买票系统就可以这么做. 如果每个线程执行的代码不同,这 ...

  5. oracle更新数据没反应,ORACLE更新数据时如果有就更新没有就插入

    SQL写法: begin update table_name set salary = 10000 where emp_id = 5; if sql%notfound then insert into ...

  6. asscess 一条记录更新数据_一条MySQL更新语句是怎么执行的?

    流程图 这是在网上找到的一张流程图,写的比较好,大家可以先看图,然后看详细阅读下面的各个步骤. 执行流程: 1.连接验证及解析 客户端与MySQL Server建立连接,发送语句给MySQL Serv ...

  7. 微信小程序 - 自定义组件中类似页面 onShow 的页面显示就触发的生命周期钩子函数(页面回退时更新数据常用, 例如回退页面更新子组件数据, 回退更新子组件中 data 内容)

    前言 在微信小程序中,用户回退页面触发更新数据的操作,一般都是在 页面 onShow() 中写上执行更新的函数即可. 但如果咱们把数据和方法都写在了自定义子组件中,那么用户回退页面时, 更新数据就成了 ...

  8. echarts简单使用、echarts通过计时器进行动态更新数据、echarts连接数据库实时更新数据

    1.echarts引入 在官网下载并放入项目中. 引入echarts.js文件: <script src="./echarts.js"></script> ...

  9. java实体null值显示_java反射实现前端接收实体对象,去除“null”字符串(示例代码)...

    从前台输入的的json 格式数据.转换成对应的实体类后. 可能会出现把null 转换成"null"字符串.这样的数据在存入数据库是可能会因为数据格式,存入时会有问题.实体字段多,修 ...

最新文章

  1. Python 之 Numpy (一)属性
  2. 浅入浅出 Android 安全:第三章 Android 本地用户空间层安全
  3. Guava区间-Range
  4. linux内核网络协议栈--linux网络设备理解(十三)
  5. Hadoop集群 MapReduce初级案例
  6. Hyperopt 入门指南
  7. OpenShift 4.3 - 基于虚拟机的BareMetal离线安装(5-6)
  8. leecode第三十题(串联所有单词的子串)
  9. 约瑟夫环c语言代码顺序存储,详解约瑟夫环问题及其相关的C语言算法实现
  10. Excel如何查找两列数据不同项
  11. 【ElasticSearch】ES分页查询超过10000限制解决
  12. Export xlsx导入
  13. c++ 函数后面加一个冒号的含义
  14. Allegro在PCB中区域规则设置方法
  15. espanso-跨平台文本扩展工具
  16. return 的作用
  17. 7-238 整数转换为字符串7-242 母牛问题7-243 快速幂
  18. 斐波那契序列递归方法_斐波那契和卢卡斯序列
  19. JAVA实现功能的方法
  20. win7企业版安装vmtool提示无法进行,需要更新到SP1。【不换镜像,已解决】

热门文章

  1. 2011年倒数第三天,下雪,第一次写博客
  2. 10.傅里叶变换——傅里叶变换、计算傅里叶变换_3
  3. 2017.6.12 crash的数字表格 思考记录
  4. python中函数的可变参数_Python中函数的参数定义和可变参数
  5. linux下判断网络是否连接
  6. 安卓添加滚轮代码_iPhone为什么都不会中病毒?安卓默默退出群聊
  7. vector 设置大小_BetterSnapTool for Mac(窗口设置工具) v1.9.3
  8. mos管的rc吸收电路计算_MOS/CMOS集成电路简介及N沟道MOS管和P沟道MOS管
  9. numpy_basic
  10. Apache Spark开发介绍