java jpa更新数据_Java如何使用JPA更新实体对象?
在此示例中,您将学习如何在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更新实体对象?相关推荐
- java原子更新类_Java内部具有原子更新的动态热交换环境
java原子更新类 有人可能会争辩说上述标题可以简称为OSGi ,我想在一开始就放弃这种思考过程. 对于OSGi而言,这没有什么冒犯的,它是一个很棒的规范,在实现层或可用性层上都搞砸了,这就是我对OS ...
- java批量处理数据_Java批量处理数据
要求:共1000条数据,第一次批量插入100条,第二次批量插入101到200条,依次插入数据: 实现方式这里选择了两种常用的方式,都是使用List操作: 第一种实现思路如下: <1> 原先 ...
- java解析json数据_java解析JSON数据详解
JSON是目前最流行的轻量级数据交换语言(没有之一).尽管他是javaScript的一个子集.但由于其是独立与语言的文本格式,它几乎可以被所有编程语言所支持. 以下是对java语言中解析json数据的 ...
- java 多线程 共享数据_JAVA多线程提高四:多个线程之间共享数据的方式
多个线程访问共享对象和数据的方式 如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如,买票系统就可以这么做. 如果每个线程执行的代码不同,这 ...
- oracle更新数据没反应,ORACLE更新数据时如果有就更新没有就插入
SQL写法: begin update table_name set salary = 10000 where emp_id = 5; if sql%notfound then insert into ...
- asscess 一条记录更新数据_一条MySQL更新语句是怎么执行的?
流程图 这是在网上找到的一张流程图,写的比较好,大家可以先看图,然后看详细阅读下面的各个步骤. 执行流程: 1.连接验证及解析 客户端与MySQL Server建立连接,发送语句给MySQL Serv ...
- 微信小程序 - 自定义组件中类似页面 onShow 的页面显示就触发的生命周期钩子函数(页面回退时更新数据常用, 例如回退页面更新子组件数据, 回退更新子组件中 data 内容)
前言 在微信小程序中,用户回退页面触发更新数据的操作,一般都是在 页面 onShow() 中写上执行更新的函数即可. 但如果咱们把数据和方法都写在了自定义子组件中,那么用户回退页面时, 更新数据就成了 ...
- echarts简单使用、echarts通过计时器进行动态更新数据、echarts连接数据库实时更新数据
1.echarts引入 在官网下载并放入项目中. 引入echarts.js文件: <script src="./echarts.js"></script> ...
- java实体null值显示_java反射实现前端接收实体对象,去除“null”字符串(示例代码)...
从前台输入的的json 格式数据.转换成对应的实体类后. 可能会出现把null 转换成"null"字符串.这样的数据在存入数据库是可能会因为数据格式,存入时会有问题.实体字段多,修 ...
最新文章
- Python 之 Numpy (一)属性
- 浅入浅出 Android 安全:第三章 Android 本地用户空间层安全
- Guava区间-Range
- linux内核网络协议栈--linux网络设备理解(十三)
- Hadoop集群 MapReduce初级案例
- Hyperopt 入门指南
- OpenShift 4.3 - 基于虚拟机的BareMetal离线安装(5-6)
- leecode第三十题(串联所有单词的子串)
- 约瑟夫环c语言代码顺序存储,详解约瑟夫环问题及其相关的C语言算法实现
- Excel如何查找两列数据不同项
- 【ElasticSearch】ES分页查询超过10000限制解决
- Export xlsx导入
- c++ 函数后面加一个冒号的含义
- Allegro在PCB中区域规则设置方法
- espanso-跨平台文本扩展工具
- return 的作用
- 7-238 整数转换为字符串7-242 母牛问题7-243 快速幂
- 斐波那契序列递归方法_斐波那契和卢卡斯序列
- JAVA实现功能的方法
- win7企业版安装vmtool提示无法进行,需要更新到SP1。【不换镜像,已解决】
热门文章
- 2011年倒数第三天,下雪,第一次写博客
- 10.傅里叶变换——傅里叶变换、计算傅里叶变换_3
- 2017.6.12 crash的数字表格 思考记录
- python中函数的可变参数_Python中函数的参数定义和可变参数
- linux下判断网络是否连接
- 安卓添加滚轮代码_iPhone为什么都不会中病毒?安卓默默退出群聊
- vector 设置大小_BetterSnapTool for Mac(窗口设置工具) v1.9.3
- mos管的rc吸收电路计算_MOS/CMOS集成电路简介及N沟道MOS管和P沟道MOS管
- numpy_basic
- Apache Spark开发介绍