Spring配置事务在DAO层和业务逻辑层

Python时间序列:PaddleTS-时间序列分类 评估的指标采用F1,Precision,Recall,PaddleTS已经基于TSDataset实现了这三个指标的计算,直接调用即可。使用内置的API:get_dataset加载BasicMotions数据集。模型训练完成之后,可以对测试集进行预测并评估。模型保存之后,可以加载模型用于新的数据预测。可以将训练完成的模型保存到指定路径。概率预测 可以返回每个分类的概率。安装paddlets。 阅读详情

Spring配置事务在DAO层和Service层

Spring通过AOP实现声明式事务管理。通常通过TransactionProxyFactoryBean设置Spring事务代理。我们需要一个目标对象包装在事务代理中。这个目标对象一般是一个普通Java对象的bean。当我们定义TransactionProxyFactoryBean时,必须提供一个相关的 PlatformTransactionManager的引用和事务属性。 事务属性含有上面描述的事务定义。

PlatformTransactionManager:

HibernateTransactionManager需要一个SessionFactory的引用

JtaTransactionManager

一.把事务放置在了DAO层:

<!—hibernateTransactionManager-->

<bean id="transactionManager"

       class="org.springframework.orm.hibernate3.HibernateTransactionManager">

       <property name="sessionFactory">

              <ref local="sessionFactory" />

       </property>

</bean>

<!—DAO层接口实现-->

<bean id="companyDAOTarget"

       class="com.vstsoft.querycompany.dao.impl.CompanyDAOImpl">

       <property name="sessionFactory">

              <ref local="sessionFactory" />

       </property>

</bean>

<!—spring对DAO层的事务代理-->

<bean id="companyDAOProxy"

       class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

       <property name="transactionManager">

              <ref bean="transactionManager" />

       </property>

       <property name="target">

              <ref local="companyDAOTarget" />

       </property>

       <property name="transactionAttributes">

              <props>

              <prop key="insert*">PROPAGATION_REQUIRED</prop>

              <prop key="delete*">PROPAGATION_REQUIRED</prop>

              <prop key="find*">

              PROPAGATION_REQUIRED,readOnly

              </prop>

              </props>

       </property>

</bean>

<!—业务层接口实现,把DAO注入到Service里面-->

<bean name="companyManageTarget"

       class="com.vstsoft.querycompany.service.impl.CompanyManageTarget">

       <property name="companyDAO">

              <ref bean="companyDAOProxy" />

       </property>

</bean>

<!—spring对Service层的代理-->

<bean id="companyManageProxy"

       class="org.springframework.aop.framework.ProxyFactoryBean">

       <property name="proxyInterfaces">

              <value>com.vstsoft.querycompany.service.CompanyManage</value>

       </property>

       <property name="target">

              <ref bean="companyManageTarget" />

       </property>

</bean>

<!—配置struts访问,把service层注入到action里面-->

<bean name="/company"

       class="com.vstsoft.querycompany.web.action.CompanyAction" singleton="false">

       <property name="companyManage">

              <ref local="companyManageProxy" />

       </property>

</bean>

二.把事务放置在了Service层:

<!—jtaTransactionManager-->

<bean id="jtaTransactionManager"

       class="org.springframework.transaction.jta.JtaTransactionManager" />

<!—DAO层接口实现-->

<bean id="companyDAOTarget"

       class="com.vstsoft.querycompany.dao.impl.CompanyDAOImpl">

       <property name="sessionFactory">

              <ref local="sessionFactory" />

       </property>

</bean>

<!—spring对DAO层的代理-->

<bean id="companyDAOProxy"

       class="org.springframework.aop.framework.ProxyFactoryBean">

       <property name="proxyInterfaces">

              <value>com.vstsoft.querycompany.dao.CompanyDAO</value>

       </property>

       <property name="target">

              <ref bean="companyDAOTarget" />

       </property>

</bean>

<!—业务层接口实现,把DAO注入到Service里面-->

<bean name="companyManageTarget"

       class="com.vstsoft.querycompany.service.impl.CompanyManageTarget">

       <property name="companyDAO">

              <ref bean="companyDAOProxy" />

       </property>

</bean>

<!—spring代理业务层的事务管理-->

<bean id="companyManageProxy"

       class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

       <property name="transactionManager">

              <ref local="jtaTransactionManager" />

       </property>

       <property name="transactionAttributes">

              <props>

                     <prop key="set*">PROPAGATION_REQUIRED</prop>

                     <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>

              </props>

       </property>

       <property name="target">

              <ref bean="companyManageTarget" />

       </property>

</bean>

<!—配置struts访问,把service层注入到action里面-->

<bean name="/company"

       class="com.vstsoft.querycompany.web.action.CompanyAction" singleton="false">

       <property name="companyManage">

              <ref local="companyManageProxy" />

       </property>

</bean>

在service层的接口实现CompanyManageImpl里面有个setData方法:按顺序执行数据查询,数据删除,数据插入数据库行为,如果哪一步出异常(运行时异常),事务回滚,只有所有行为都没成功,事务提交。

 
不同IP网段的PLC进行S7通信(PUT_GET)的具体步骤 不同IP网段的PLC进行S7通信(PUT_GET)的具体步骤 一般情况下,我们使用西门子的S7通信时都是将网络中的PLC的IP设置在同一网段,那么如果涉及到旧项目改造时,不方便修改IP地址,只能进行2个网段通信时,可以参考以下步骤: 准备条件: 2个路由器 CPU 1212C 主动连接 CPU 314C-2PN/DP 被动连接 网络搭建如下图所示: S7-1212C一侧 建立S7主动连接 ,IP地址:192.168.5.40,编写get/put 通信程序 S7-300 IP地址:192.168.0 阅读详情

相关推荐

张量/数组存储方式与向量化展开/展平、view、reshape、permute对比

对于一个Tensor来说,我们可以认为它有两种存储方式。

欢迎关注,共同进步! 3434

Spring事务的传播特性

所谓事务的嵌套就是两个事务方法之间相互调用。spring事务开启 ,或者是基于接口的或者是基于类的代理被创建(注意一定要是代理,不能手动new 一个对象,并且此类(有无接口都行)一定要被代理——spring中的bean只要纳入了IOC管理都是被代理的)。 所谓事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播。Spring 支持 7 种事务传播行为(Transaction Propa...

alex的博客 6581

海康视觉平台VisionMaster实战入门:从通讯配置到工具应用

本文为海康VisionMaster视觉平台实战入门指南,详细介绍了从软件安装准备、与PLC等外部设备的通讯配置,到匹配定位、测量、畸变矫正等核心工具的应用方法。通过实战案例拆解,帮助工程师快速掌握如何搭建完整的机器视觉检测与引导定位系统,实现工业自动化项目落地。

weixin_29224309的博客 1016

Spring中的事务管理

Spring中的事务管理,①基于xml配置文件和注解的混合方式,②基于完全xml配置文件的方式,③基于完全注解的方式。

qq_40834643的博客 2542

SRC漏洞挖掘实战指南:从零入门到月入过万的网络安全副业

网络安全的核心在于识别和修复系统缺陷,其中逻辑漏洞与信息泄露是常见的安全风险。其原理在于应用程序在业务逻辑设计或数据处理过程中存在缺陷,导致未授权访问或敏感数据暴露。掌握这些技术对于构建安全的应用体系至关重要,不仅能有效防范攻击,也为安全研究人员提供了将技术能力变现的合法途径。在漏洞赏金(Bug Bounty)和SRC(安全应急响应中心)等应用场景中,白帽子通过系统化的测试方法,挖掘此类漏洞,既能获得经济回报,又能积累宝贵的实战经验。本文聚焦于逻辑漏洞与信息泄露的实战挖掘技巧,为初学者提供清晰的入门路径和效

weixin_28568819的博客 351

西门子CPU与汇川伺服通信与控制

第三方驱动器的配置内容和西门子的配置内容基本一致,基本上会一种即可知道其他品牌的配置默认报文,需要激活硬限位才能收到限位信号默认报文,原点信号不能实时输出到PLC;自定义报文,需要伺服端设置DIN点位。

大小曲奇的博客 1万+

三层架构编程、DAO层、Entity层、Service层、Controller层

本质上所有的项目(应用程序)都是需要和用户交互,然后产生数据,对数据进行处理,最后将数据存储到硬盘这么个过程在编程中,可以将这个过程分一下层次,最初只分两层,用户层和数据层,但是后来人们发现,只分两层的话,这两层之间的耦合程度比较高,在实际运行过程中会造成不必要的麻烦,所以为了分层架构的编程方法实用性更好,抽取出另外一层专门负责处理用户提交的数据,对数据进行判断,验,组装等最后将处理好的数据交给数据层完成存储,这一层被称为业务逻辑层到这里。

m0_57954117的博客 4185

AI智能体项目管理框架agent-pm:从原理到实战的多智能体协作指南

在人工智能和自动化技术快速发展的今天,多智能体系统已成为实现复杂任务自动化的重要技术路径。其核心原理在于通过任务分解、角色分配和状态管理,让多个AI智能体像人类团队一样协同工作,从而突破单个模型的性能边界。这种架构的技术价值在于将软件工程中成熟的项目管理方法论引入AI领域,显著提升了自动化流程的可预测性、可观测性和可复用性。在实际应用场景中,多智能体协作框架能够高效处理从代码开发、文档撰写到数据分析等一系列任务,尤其适合需要多步骤、多专业协同的复杂项目。本文聚焦的agent-pm框架,正是这一领域的典型实践

weixin_42533910的博客 714

什么是Dao层、Entity层、Service层、Servlet层、Utils层?

基础知识整理......

Restarting2019的博客 14万+

预测股票价格趋势:使用MATLAB进行股票价格预测

通过收集股票数据、数据预处理、构建预测模型以及可视化结果,我们可以利用MATLAB强大的计算和分析功能来预测股票价格的走势。然而,需要注意的是,股票市场具有高度复杂性和不确定性,预测结果仅供参考,并不构成投资建议。然而,借助计算机编程和数据分析工具,我们可以利用历史股价数据来建立模型,并预测未来的股票价格走势。首先,我们需要获取股票的历史价格数据。完成模型的拟合后,我们可以使用该模型来进行未来股票价格的预测。最后,我们可以使用MATLAB的绘图功能将预测的股票价格与实际股票价格进行对比,并进行可视化展示。

2301_79326588的博客 1018

PNETLab 镜像包官方下载太慢?不急,最新版本PNET_4.2.10分享!

你好,这里是网络技术联盟站,我是瑞哥。PNETLab是一个强大的网络仿真工具平台,全称Packet Network Emulator Tool Lab。它不仅允许用户进行深入的网络实验,还支持社区成员之间的实验室共享。PNETLab致力于为学习者、教师以及网络工程师提供一个全面的实验环境,以便于他们能够在实际部署前测试和验证网络配置和协议。和。这两个部分相辅相成,共同构成了一个全面且灵活的网络仿真生态系统。

网络技术联盟站 4479

spring事务配置是在业务逻辑层还是dao层?

spring事务配置是在业务逻辑层还是dao层? 业务逻辑层和dao层都可以配置事务处理,如果一个service调用多个dao,它们如果是一个事务,那么事务应该配置业务逻辑层,否则配置在dao层就可以了。 配置到dao层 PROPAGATION_REQUIRED PRO...

Shirley's IT life! 755

【WorkBuddy专栏】完结篇暨付费专栏总目录(内容继续更新中)

【WorkBuddy专栏】完结篇和付费内容总目录

AI人人懂 913

spring事务到底用于service层还是dao层

Spring事务为业务逻辑进行事务管理,保证业务逻辑上数据的原子性。 事务得根据项目性质来细分:事务可以设置到三个层面(dao层、service层和web层)。 第一:web层事务,这一般是针对那些安全性要求较高的系统来说的。例如电子商务网站。粒度小,一般系统用不着这么细。 第二:service层事务,这是一常见的事务划分, 将事务设置在业务逻辑上,只要业务逻辑出错或异常就事务...

161

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

关于Spring 事务配置

 事务在系统服务启动的时候就加载了,一般的,我们把事务配在service层,利用service的业务逻辑借口统一的管理。为什么不用在dao层呢?因为一个service有可能调用多个dao,而这多个dao有可能相互联系,有时候一个操作需要调用多次数据库,但是这多次调用要么全提交,要么全回滚。因此,在dao层调用事务理论上说不是一个很明智的选择。应该有业务逻辑层service层负责事务,统一处理。具体

smily的专栏 568

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Spring的事务到底该给Dao配置还是给Service配置?

Spring事务为业务逻辑进行事务管理,保证业务逻辑上数据的原子性。 事务得根据项目性质来细分:事务可以设置到三个层面(dao层、service层和web层)。 第一:web层事务,这一般是针对那些安全性要求较高的系统来说的。例如电子商务网站。粒度小,一般系统用不着这么细。 第二:service层事务,这是一常见的事务划分, 将事务设置在业务逻辑上,只要业务逻辑出错或异常就事务回滚。粒度较小,一...

weixin_30826095的博客 77

spring 事务管理(转账的例子)

这里通过转账来对spring 例子进行说明 小明是个程序员,七夕节到了,小明想着给老婆发红包,用自己的开发的某个支付平台,给老婆发了1314的红包,但是程序出现了问题,发生了异常,结果不仅老婆没收到钱,小明的1314元钱也丢失了,这把小明气坏了,决心更改自己的支付平台,通过学习spring ,他想到了事务管理l,来解决这个问题 1 首先整理下配置管理需要的jar包 2 创建数据库 3 创建业务...

幻城--那一份初心 533

【spring-tx】@Transactional 配置位置,什么样的方法需要配置?

在Service层配置注解是最佳实践,尤其是对于涉及多个数据库操作的方法。事务管理可以确保数据的一致性和完整性,适用于需要原子性操作、批量处理、跨多个数据源操作的情况。根据具体业务需求和场景,适当配置事务传播行为和只读属性,确保事务管理的有效性。

weixin_44357602的博客 849

spring.net 实现访问oracle数据库,对表增、删、改、查支持事务拦截

搜索了很多资料终于把spring.net 对oracle的操作实现(winform),并且事务的控制很好。在这里把源码贴出来,方便大家。 spring.net 版本为1.3.1 1:项目引用组件:    其中common.loggin.dll为必要的组件,因为spring.net的相关日志输入都是基于该组件 2:项目结构 实现简单的层级entity、dao、biz、imp

zhuchenchangk163的博客 715

SSH配置:spring:applicationConfig.xml

  近来做了一个小项目,用到了Struts1.x,Spring 2.5和Hibernate3,其中的一些配置文件较为典型,所以拿到这里来和大家分享。xml version="1.0" encoding="UTF-8"?>beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http

重剑无锋,大巧不工。。。 3090
上一篇: Hibernate和Spring对DAO处理的实例 (!!!)
下一篇: 使用struts+spring+hibernate 组装web应用(!!!)
yethyeth
博客等级 码龄21年 140粉丝 265原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值