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

JPA、EJB、事物管理---相关内容整理

目录

■前言

■实现原理:容器管理事务

■代码实现简单描述:

1.JPA

■定义

■1.1.配置文件

■1.2.OSS jar  

■1.3.一些OPA的类(举例)

■1.4. jpa 框架在实体类(Entity)中添加非数据库字段的属性---@Transient

■1.5. JPA 原生配置

■1.6. EntityManager 管理事务

■1.7.ORM框架

■1.8.javax.persistence

■1.9.transaction-type

■1.10.JTA 与 RESOURCE_LOCAL 之间的区别

2.EJB-事务管理

2.1.EJB默认事物

2.2.EJB的事务管理分如下两个方面

2.3.容器管理事务


=====

■前言

看了一段业务对于的处理代码,

代码里面没有任何事物处理的相关处理,

却实现了事物功能。

■实现原理:容器管理事务

容器管理事务主要是通过容器自动控制事务的开启,提交和回滚,开发人员不需要手工编写代码,由容器来控制事务的边界,一般来说是业务方法的开始

■代码实现简单描述:

・ 代码部署在WebSphere上

・数据库处理在Service层中,在Sevice层中,有多个对数据库的操作。

・是使用JPA (ORM)实现数据库操作的。可以实现回滚功能。

・有关于JPA的配置文件  WEB-INF/classes/META-INF/persistence.xml

・JPA的配置文件中,管理事务管理方式是JTA,即是由应用程序服务器的实现事物管理。

・ service层中,使用了一个EJB的标签:@Stateless。

1.JPA

jpa详解_java菜鸟1的博客-CSDN博客

■定义

JPA(Java Persistence API)和JDBC类似,也是官方定义的一组接口,但是它相比传统的JDBC,它是为了实现ORM而生的,即Object-Relationl Mapping,它的作用是在关系型数据库和对象之间形成一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了。
 

=========================================================

■1.1.配置文件

persistence.xml   // JPA persistence.xml

JPA persistence.xml 文件初学者指南_allway2的博客-CSDN博客_persistence.xml

persistence.xml在下面这个目录中

WEB-INF/classes/META-INF

■1.2.OSS jar  

org.eclipse.persistence.jpa

java - 我对Maven依赖感到困惑:“org.eclipse.persistence.jpa”和“org.hibernate” | persistence

■1.3.一些OPA的类(举例)

javax.persistence.PersistenceContext
(所属jar  javax.persistence-2.x.x.jar )

■1.4. jpa 框架在实体类(Entity)中添加非数据库字段的属性---@Transient

问:jpa表实体的字段和表的字段是一一对应的。比如,那么,如果我在查询时,想在表字段的基础上添加几个返回的字段,怎么办?
解:在实体类中添加我们想添加的字段,并加上注解:@Transient,
 

@Transient
privite String  userId;


效果:这样在调用此类返回时,便有了此字段,我们可以给这个字段赋值,进行操作,而且不会在数据库中添加这个字段。

■1.5. JPA 原生配置

JPA原生配置和使用_Chgl16的博客-CSDN博客

■1.6. EntityManager 管理事务

import javax.persistence.EntityManager;
import javax.persistence.Persistence;public class EMUtil {public static EntityManager getEM() {return Persistence.createEntityManagerFactory("hotel").createEntityManager();}
}import javax.persistence.EntityManager;
import javax.persistence.Persistence;
import javax.persistence.Query;

----

public void insertMember(Member member) {em.getTransaction().begin();em.persist(member);em.getTransaction().commit();// 仅仅一个数据库连接,就不关了
//  em.close();
}

----

import javax.persistence.*;@Entity
@Table(name = "member")
public class Member {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private int id;private String phone;private String identity;private String username;private String password;/** getter and setter **/
}

----

■1.7.ORM框架

JPA(Java Persistence API), JPA是一个ORM的标准规范,而不是一个具体的ORM框架
    (  ORM(object relation mapping) 对象关系映射关系 ,面向对象的对象模型和关系型数据之间的相互转换。)

介绍几种ORM框架_火腿编程的博客-CSDN博客

・Hibernate: Hibernate是一个全自动的ORM模型,Hibernate可以自动生成SQL语句,自动执行。
・MyBatis:MyBatis是一款半自动的ORM模型,它支持定制化 SQL、存储过程及高级映射。
・【javax.persistence-2.x.x.jar】或【javaee-web-api-7.0.jar】中的接口,类
  javax.persistence.Query和javax.persistence.EntityManager都是JAP发布的接口,是用于对象持久化API。
    使用,[em.createNativeQuery(sql);]创建Query


■1.8.javax.persistence

javax.persistence.Persistence - JPA class

■1.9.transaction-type

 JPA 事务策略,它可以采用以下两个值之一:
・JTA
・RESOURCE_LOCAL

如果您使用的是 JTA,您可以使用jta-data-source为关联的 JTA 指定 JNDI 名称DataSource,
而对于RESOURCE_LOCAL,您需要使用non-jta-data-source.
 

■1.10.JTA 与 RESOURCE_LOCAL 之间的区别

JPA实现可以选择自己管理事务(RESOURCE_LOCAL),还是由应用程序服务器的JTA实现对其进行管理。

在大多数情况下,RESOURCE_LOCAL可以。这将使用基本的JDBC级事务。缺点是该事务对于JPA持久性单元而言是本地的,因此,如果您想要一个跨多个持久性单元(或其他数据库)的事务,则RESOURCE_LOCAL可能不够好。

JTA还用于跨JMS和JCA之类的系统管理事务,但这对我们大多数人来说是相当奇特的用法。

要使用JTA,您需要在应用程序服务器中对其进行支持,并且还需要JDBC驱动程序的支持

=========================================================

2.EJB-事务管理

2.1.EJB默认事物

EJB--事务管理 ._51CTO博客_ejb服务

@TransactionManagement(TransactionManagementType.CONTAINER)

表示指定事务的类型。如果省略,默认为CMT方式。
 

import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;@Stateless(name = "UserManager")
@Remote
@TransactionManagement(TransactionManagementType.CONTAINER)
public class UserManagerBean implements UserManager {@PersistenceContextprivate EntityManager em ;@TransactionAttribute(TransactionAttributeType.REQUIRED)public void addUser(String name) {User s = new User();s.setName(name);em.persist(s);System.out.println("服务器端执行成功:保存姓名" + name);}}

2.2.EJB的事务管理分如下两个方面

1、CMT(容器管理事务)(默认)
2、BMT(Bean管理事务)

EJB事务控制(CMT和BMT两种方式以及JTA事务) - 姜师爷闯世界 - 博客园

2.3.容器管理事务

容器管理事务主要是通过容器自动控制事务的开启,提交和回滚,开发人员不需要手工编写代码,由容器来控制事务的边界,一般来说是业务方法的开始

================================

15.

相关文章:

JPA、EJB、事物管理---相关内容整理

目录 ■前言 ■实现原理:容器管理事务 ■代码实现简单描述: 1.JPA ■定义 ■1.1.配置文件 ■1.2.OSS jar ■1.3.一些OPA的类(举例) ■1.4. jpa 框架在实体类(Entity)中添加非数据库字段的属性--…...

C语言学习笔记(一):了解C语言

什么是C语言 C语言是一种高级编程语言,最早由丹尼斯里奇在1972年开发。它是一种通用编程语言,提供了高级编程语言的方便和易用性,同时又有较低级别的编程语言的灵活性和效率。C语言在许多操作系统、编译器和应用程序开发中广泛使用&#xff…...

回头看——《智能家居项目小结》

openAI兴起,于是拿着之前小组合作的项目(承认优化较差),交给AI试着帮忙优化下1.功能函数(TCP_SER_INIT)优化源代码:int TCP_SER_INIT(int *tcpsocket, const char *ip, const char *…...

社交登陆OAuth2.0

QQ、微博、github 等网站的用户量非常大,别的网站为了 简化自我网站的登陆与注册逻辑,引入社交登陆功能; 步骤: 1)、用户点击 QQ 按钮 2)、引导跳转到 QQ 授权页 3)、用户主动点击授权&#xff…...

C++005-C++选择与分支2

文章目录C005-C选择与分支2条件语句C实现else if 语句题目描述 根据成绩输出成绩等级ABCDEif嵌套语句题目描述 输出三个数中的最大值题目描述 模拟游戏登录switch语句三元运算符题目描述 输出三个数中的最大值-基于3元运算符题目描述 根据1-7输出星期1-星期日案例练习题目描述 …...

IPFS 简介及概述

文章目录 IPFS 简介IPFS 包含的协议内容及其理解IPFS 和 BitTorrent 区别IPFS 简介 星际文件系统(InterPlanetary File System). IPFS 是一个分布式的网络文件系统, 点到点超媒体协议. 可以让我们的互联网速度更快, 更加安全, 并且更加开放. IPFS协议的目标是取代传统的互联网…...

初学者必读:讲解 VC 下如何正确的创建、管理及发布项目

Visual C 的项目文件组成,以及如何正确的创建及管理项目。 本内容是初学者必须要掌握的。不能正确的管理项目,就不能进一步写有规模的程序。 一、项目下各种常见文件类型的功能 1. 代码文件 扩展名为 .cpp、.c、.h 等。 通常情况下,项目…...

剑指offer(中等)

目录 二维数组中的查找 重建二叉树 矩阵中的路径 剪绳子 剪绳子② 数值的整数次方 表示数值的字符串 树的子结构 栈的压入、弹出序列 从上到下打印二叉树① 从上到下打印二叉树③ 二叉搜索树的后序遍历序列 二叉树中和为某一值的路径 复杂链表的复制 二叉搜索树与…...

微软发布会精华回顾:“台式电脑”抢了风头

Lightbot北京时间2016年10月26日晚10点,微软在纽约发布了名为 Surface Studio 的一体机、名为 Surface Dial 的配件以及外观未变的顶配版 Surface Book。同时,微软宣布了 Windows 10 下一个重要版本——“Creators Update”的数项新功能,包括…...

CF1561C Deep Down Below 题解

CF1561C Deep Down Below 题解题目链接字面描述Deep Down Below题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思路TLE算法具体思想TLE特例AC思想代码实现备注题目 链接 https://www.luogu.com.cn/problem/CF1561C 字面描述 Deep Down Below 题面翻译…...

秒杀项目之服务调用分布式session

目录 nginx动静分离 服务调用 创建配置zmall-cart购物车模块 创建配置zmall-order订单模块 服务调用 spring session实战 什么是Spring Session 为什么要使用Spring Session 错误案例展示 配置spring-session 二级域名问题 用户登录 nginx动静分离 第1步&#xff…...

聊聊什么是架构,你理解对了吗?

什么是架构?软件有架构?建筑也有架构?它们有什么相同点和不同点? 下面咱们就介绍一下,容易混淆的几个概念 一、系统与子系统 系统 泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。它的意思是 “总体”、“整体”或“联盟” 子系…...

java多线程开发

1.并发和并行 并发:同一时间段内多个任务同时进行。 并行:同一时间点多个任务同时进行。 2.进程线程 进程(Process):进程是程序的一次动态执行过程,它经历了从代码加载、执行、到执行完毕的一个完整过程…...

杂记7--opencv的ar码模块学习

背景&#xff1a;项目需要用到marker知识&#xff0c;所以到官网上临时补一些知识。 概要&#xff1a;主要介绍marker一些接口的含义&#xff0c;纯属个人理解&#xff0c;有误则希望大佬不吝赐教 1、 涉及ar码操作学习&#xff0c;其头文件为&#xff1a; #include <op…...

[项目设计]高并发内存池

目录 1、项目介绍 2、高并发内存池整体框架设计 3、thread cache <1>thread cache 哈希桶对齐规则 <2>Thread Cache类设计 4、Central Cache <1>Central Cache类设计 5、page cache <1>Page Cache类设计 6、性能分析 <1>定长内存池实现…...

28岁才转行软件测试,目前32了,我的一些经历跟感受

我是92年的&#xff0c;算是最早的90后&#xff0c;现在跟你介绍的时候还恬不知耻的说我是90后&#xff0c;哈哈&#xff0c;计算机专业普通本科毕业。在一个二线城市&#xff0c;毕业后因为自身能力问题、认知水平问题&#xff0c;再加上运气不好&#xff0c;换过多份工作&…...

Python导入模块的3种方式

很多初学者经常遇到这样的问题&#xff0c;即自定义 Python 模板后&#xff0c;在其它文件中用 import&#xff08;或 from...import&#xff09; 语句引入该文件时&#xff0c;Python 解释器同时如下错误&#xff1a;ModuleNotFoundError: No module named 模块名意思是 Pytho…...

select 与 where、order by、limit 子句执行优先级比较

当 select 和 其他三种语句的一者或者多者同时出现时&#xff0c;他们之间是存在执行先后顺序的。 他们的优先级顺序是&#xff1a;where > select > order by > limit 目录 1、select 与 where 2、select 与 order by 3、order by 与 limit 4、优先级证明 1、s…...

Linux内核并发与竞争-原子操作

一.原子操作的概念首先看一下原子操作&#xff0c;原子操作就是指不能再进一步分割的操作&#xff0c;一般原子操作用于变量或者位操作。假如现在要对无符号整形变量 a 赋值&#xff0c;值为 3&#xff0c;对于 C 语言来讲很简单&#xff0c;直接就是&#xff1a; a3但是 C 语言…...

Java笔记-泛型的使用

参考&#xff1a; Java 泛型&#xff0c;你了解类型擦除吗&#xff1f; 泛型的使用 1、泛型的定义 可以广泛使用的类型&#xff0c;一种较为准确的说法就是为了参数化类型&#xff0c;或者说可以将类型当作参数传递给一个类或者是方法。 2、泛型的使用 2.1泛型类 public c…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...