当前位置: 首页 > news >正文

怎样做网站分析总结/免费seo推广软件

怎样做网站分析总结,免费seo推广软件,珠海建网站专业公司,wordpress 代码编写(二)JPA 连接工厂、主键生成策略、DDL自动更新 建议在需要使用时,看看之前的文章,先把环境搭起来。 4、EntityManager EntityManager 是完成持久化操作的核心对象。 EntityManager 对象在一组实体类与底层数据源之间进行 O/R 映…

(二)JPA 连接工厂、主键生成策略、DDL自动更新

建议在需要使用时,看看之前的文章,先把环境搭起来。

4、EntityManager

EntityManager 是完成持久化操作的核心对象。

EntityManager 对象在一组实体类与底层数据源之间进行 O/R 映射的管理。它可以用来管理和更新 Entity Bean, 根椐主键查找 Entity Bean, 还可以通过JPQL语句查询实体。

上面测试代码中,已经使用过EntityManager完成持久化操作。

实体类的状态:

新建状态: 新创建的对象,尚未拥有持久性主键;

**持久化状态:**已经拥有持久性主键并和持久化建立了上下文环境;

**游离状态:**拥有持久化主键,但是没有与持久化建立上下文环境;

删除状态: 拥有持久化主键,已经和持久化建立上下文环境,但是从数据库中删除。

4.1 persist 增

persist (Object entity):用于将新创建的 Entity 纳入到 EntityManager 的管理。该方法执行后,传入 persist() 方法的 Entity 对象转换成持久化状态。

如果传入 persist() 方法的 Entity 对象已经处于持久化状态,则 persist() 方法什么都不做。

如果对删除状态的 Entity 进行 persist() 操作,会转换为持久化状态。

如果对游离状态的实体执行 persist() 操作,可能会在 persist() 方法抛出 EntityExistException(也有可能是在flush或事务提交后抛出)。

测试代码:

   @Testpublic void testPersist() {// 获取连接EntityManager entityManager = JPAEntityFactory.getEntityManager();// 开启事务entityManager.getTransaction().begin();// 新建状态实例 Course course = new Course();course.setCname("Spring编程实战");course.setStart(DateUtil.stringToDate("2022-09-19"));course.setEnd(DateUtil.stringToDate("2022-12-30"));course.setCredit(2);course.setNum(88);// 对新建状态 持久化entityManager.persist(course);// 提交事务entityManager.getTransaction().commit();// 关闭连接JPAEntityFactory.close();}
// 日志信息
insert into course (cname, credit, end, num, start) values (?, ?, ?, ?, ?)

如果设置了id,就说明这是一个游离状态的实体类,执行会出现异常

4.2 merge 增\改

merge() 用于处理 Entity的同步。即数据库的插入和更新操作。

image-20220921215136231

测试代码: 传入新建状态的对象

    @Testpublic void testMerge() {// 获取连接EntityManager entityManager = JPAEntityFactory.getEntityManager();// 开启事务entityManager.getTransaction().begin();Course course = new Course();course.setCname("Spring编程实战");course.setStart(DateUtil.stringToDate("2022-09-19"));course.setEnd(DateUtil.stringToDate("2022-12-30"));course.setCredit(2);course.setNum(88);// 对新建状态 持久化entityManager.merge(course);// 提交事务entityManager.getTransaction().commit();// 关闭连接JPAEntityFactory.close();}

查看日志,可以看到,执行的是插入操作。

insert into course (cname, credit, end, num, start) values (?, ?, ?, ?, ?)

测试代码: 传入游离状态对象

    @Testpublic void testMerge() {// 获取连接EntityManager entityManager = JPAEntityFactory.getEntityManager();// 开启事务entityManager.getTransaction().begin();Course course = new Course();course.setCid(2L);course.setCname("Spring编程实战");course.setStart(DateUtil.stringToDate("2022-09-19"));course.setEnd(DateUtil.stringToDate("2022-12-30"));course.setCredit(2);course.setNum(88);// 对新建状态 持久化entityManager.merge(course);// 提交事务entityManager.getTransaction().commit();// 关闭连接JPAEntityFactory.close();}

查看日志,可以看到,执行的是Update语句

update course set cname=?,credit=?,end=?, num=?, start=? where cid=?

4.3 remove 删

删除实例。如果实例是被管理的,即与数据库实体记录关联,则同时会删除关联的数据库记录。

**注意:**该方法只能移除持久化对象。

 @Testpublic void testRemove() {// 获取连接EntityManager entityManager = JPAEntityFactory.getEntityManager();// 开启事务entityManager.getTransaction().begin();// 查询Course course = entityManager.find(Course.class, 2);// 对新建状态 持久化entityManager.remove(course);// 提交事务entityManager.getTransaction().commit();// 关闭连接JPAEntityFactory.close();}

查看日志,可以看到,执行的是Delete语句

delete from course where cid=?

4.4 find 查

find (Class<T> entityClass,Object primaryKey):返回指定的 OID 对应的实体类对象。

第一个参数为被查询的实体类类型,第二个参数为待查找实体的主键值。

如果这个实体存在于当前的持久化环境,则返回一个被缓存的对象;否则会创建一个新的 Entity, 并加载数据库中相关信息;若 OID 不存在于数据库中,则返回一个 null。

    @Testpublic void testFind() {// 获取连接EntityManager entityManager = JPAEntityFactory.getEntityManager();// 开启事务entityManager.getTransaction().begin();// 查询主键为3LCourse course = entityManager.find(Course.class, 3L);loggerFactory.info("【find查询结果:】{}", course);// 提交事务entityManager.getTransaction().commit();// 关闭连接JPAEntityFactory.close();}

查看日志信息:【find查询结果:】Course(cid=3, cname=Spring编程实战, start=2022-09-19, end=2022-12-30, credit=2, num=88)

4.5 getReference

getReference (Class<T> entityClass,Object primaryKey):与find()方法类似。

不同的是:如果缓存中不存在指定的 Entity, EntityManager 会创建一个 Entity 类的代理,但是不会立即加载数据库中的信息,只有第一次真正使用此 Entity 的属性才加载,所以如果此 OID(主键) 在数据库不存在,getReference() 不会返回 null 值, 而是抛出EntityNotFoundException。

    @Testpublic void testGetReference() {// 获取连接EntityManager entityManager = JPAEntityFactory.getEntityManager();// 开启事务entityManager.getTransaction().begin();Course course = entityManager.getReference(Course.class, 3L);loggerFactory.info("【find查询结果:】{}", course);// 提交事务entityManager.getTransaction().commit();// 关闭连接JPAEntityFactory.close();}

查看日志信息:【find查询结果:】Course(cid=3, cname=Spring编程实战, start=2022-09-19, end=2022-12-30, credit=2, num=88)

不存在,则会抛出异常:

image-20220921222722234

http://www.lbrq.cn/news/779743.html

相关文章:

  • 如何查询网站主机信息/个人建网站步骤
  • 邯郸建设网站公司/网络营销软件商城
  • 做国外网站注册工作靠谱吗/快链友情链接平台
  • labview可以做网站吗/抖来查关键词搜索排名
  • 远程教育网站开发/近期新闻大事
  • IT做网站工资怎么样/品牌整合营销方案
  • 虎门做网站公司/专业搜索引擎seo服务
  • 企业网站用什么套站/线上培训机构
  • 专业网站建设 公司/广州做seo整站优化公司
  • 网站维护公告模板/廊坊网站推广公司
  • 做二手房又做网站的/阿里巴巴国际贸易网站
  • 网站开发需要的人员/微信怎么推广
  • 网站建设专员工作日志/百度推广员工工资怎么样
  • 房产中介网站建设的目的/网站流量统计分析报告
  • 初级程序员与网站开发/深圳全网推广方案
  • 百度做的网站迁移/seo搜索引擎优化实训总结
  • 网站建设工作整改报告/深圳小程序建设公司
  • 用C语言做网站登录界面/湖南关键词排名推广
  • 时尚类网站设计公司/台州seo优化公司
  • 江苏工程建设信息官方网站/公司培训课程有哪些
  • 网站建设培训班/短信营销平台
  • 湖南住房与城乡建设部网站/什么是整合营销概念
  • 华为企业网站规划建设方案/爱站网关键词密度
  • 网站制作复杂吗/百度快照seo
  • wordpress 交易模板/河南seo排名
  • ps个人网站怎么做/百度关键词屏蔽
  • 给公司做网站多少钱/关键词排名
  • 本地php网站搭建环境/谷歌chrome官网
  • 珠海建站模板源码/软文写作500字
  • 政府门户网站详细建设方案/网站关键字优化技巧
  • 鸿蒙分布式任务调度深度剖析:跨设备并行计算的最佳实践
  • Vue框架总结案例
  • ICCV-2025 | 同济上海AILab跨越虚拟与现实的具身导航!VLN-PE:重审视觉语言导航中的具身差距
  • (已解决)Mac 终端上配置代理
  • QT5.15 mingw
  • linux下的串口通信原理及编程实例