首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

springMvc4+hibernate4的一个奇葩的网上众说纷纭的错误

springMvc4+hibernate4项目运行报错如下: org.hibernate.HibernateException: Could not obtain transaction-synchronized...-- 配置 Annotation 驱动,扫描@Transactional注解的类定义事务 --> <tx:annotation-driven transaction-manager="transactionManager...使用 hibernate4,在不使用OpenSessionInView模式时,在使用getCurrentSession()时会有如下问题: 当有一个方法list 传播行为为Supports,当在另一个方法...getPage()(无事务)调用list方法时会抛出org.hibernate.HibernateException: No Session found for current thread 异常。...这是因为getCurrentSession()在没有session的情况下不会自动创建一个,不知道这是不是Spring3.1实现的bug,欢迎大家讨论下。 <!

56270

Java抽象类及子类实例化顺序和方法调用顺序测试

测试目的 验证抽象类及子类实例化顺序; 验证抽象类是否可以在子类未实例化时调用子类实现的抽象方法; 验证java的多态性 实例 抽象类: package com.secbro.test.abstractInit...Plant a Banana Eat a Banana 实例化子类 Banana 实例化父类 Plant a Orange Eat a Orange 实例化子类 Orange 结果分析 查看子类、抽象类的构造方法打印结果可知...,实例化子类时先实例化父类。...在抽象类的构造方法中调用了自己未实现的抽象方法,那么对应实例化的子类实现了此方法,在抽象类实例化之后,子类未实例化之前,抽象类可以调用子类实现的抽象方法。...不同的类实例化打印不同的抽象方法实现,java多态的一种表现形式。

82430
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    掌握 @transactional 注解@Transactional 注解管理事务的实现步骤Spring 的注解方式的事务实现机制

    当类级别配置了@Transactional,方法级别也配置了@Transactional,应用程序会以方法级别的事务属性信息来管理事务,换言之,方法级别的事务属性信息会覆盖类级别的相关配置信息。...Spring 的注解方式的事务实现机制 在应用系统调用声明@Transactional 的目标方法时,Spring Framework 默认使用 AOP 代理,在代码运行时生成一个代理对象,根据@Transactional...避免 Spring 的 AOP 的自调用问题 在 Spring 的 AOP 代理下,只有目标方法由外部调用,目标方法才由 Spring 生成的代理对象来管理,这会造成自调用问题。...若同一类中的其他没有@Transactional 注解的方法内部调用有@Transactional 注解的方法,有@Transactional 注解的方法的事务被忽略,不会发生回滚。...上面的两个问题@Transactional 注解只应用到 public 方法和自调用问题,是由于使用 Spring AOP 代理造成的。

    88460

    Java多态性和抽象类应用示例:动态调用相同方法

    Java多态性和抽象类应用示例:动态调用相同方法 博主 默语带您 Go to New World....摘要 本博客介绍了Java中多态性和抽象类的实际应用,重点展示了如何使用抽象类和多态性来实现动态调用具有相同方法签名的不同子类方法。...抽象类允许我们定义规范,而多态性则允许我们在运行时根据对象的实际类型来调用方法。本文将结合示例详细探讨这两个概念的应用。...重点解释 抽象类的定义: 我们首先定义一个抽象类,其中包含一个或多个抽象方法,这些方法没有具体的实现,需要在子类中进行重写。...总结 本文介绍了Java中多态性和抽象类的应用示例,通过一个实际示例演示了如何创建抽象类、子类,并使用多态性的特性来动态调用具有相同方法签名的不同子类方法。

    9410

    最近线上面试,遇到了个使用GPT大模型面试的

    我听的不太清楚”一类的,支支吾吾拖延时间,十来秒之后又什么问题都能答上来。 随后了不起特地问了个跨行业的技术问题(电力通讯),他不知道超纲了,但是也在支支吾吾十来秒后回答上了。...在Spring中,声明式事务管理通常使用@Transactional注解来实现。这个注解可以应用到类级别或方法级别,用于指定事务的行为。...(InnoDB) 同一个类中,没有事务的A方法,调用了带事务的B方法,而你直接使用的是A方法,即:当在一个事务方法内部调用同一个类中的另一个事务方法时,外部方法的事务不会传播到内部方法,除非使用了特定的传播行为...由于它们都在同一个类中,所以internalCreateUser方法的事务配置不会生效。如果internalCreateUser方法抛出异常,事务不会回滚。...解决方案:将internalCreateUser方法移到另一个服务类中,或者使用@Transactional(propagation = Propagation.REQUIRES_NEW)来确保每个方法都有独立的事务

    6710

    Java异常总结和Spring事务处理异常机制浅析

    Thorwable类所有异常和错误的超类,有两个子类Error和Exception,分别表示错误和异常。...该方法的调用者也必须检查处理抛出的异常。如果所有方法都层层上抛获取的异常,最终JVM会进行处理,处理也很简单,就是打印异常消息和堆栈信息。...如果抛出的是Error或RuntimeException,则该方法的调用者可选择处理该异常。有关异常的转译会在下面说明。...仅当抛出了检查异常,该方法的调用者才必须处理或者重新抛出该异常。当方法的调用者无力处理该异常的时候,应该继续抛出,而不是囫囵吞枣一般在catch块中打印一下堆栈信息做个勉强处理。...Spring事务回滚与异常 Spring被事务管理的方法,需要抛出非检查异常,即运行期异常才能进行回滚 对非检查型类异常可以不用捕获,而检查型异常则必须用try语句块进行处理或者把异常交给上级方法处理总之就是必须写代码处理它

    1.3K40

    工作 6 年,@Transactional 注解用的一塌糊涂

    事务范围过大 有些同学为了省事直接将 @Transactional 注解加在了类上或者抽象类上,这样做导致的问题就是类内的方法或抽象类的实现类中所有方法全部都被事务管理。...同类内部方法间的调用是 @Transactional 注解失效的重灾区,网上你总能看到方法内部调用另一个同类的方法时,这种调用是不会经过代理的,因此事务管理不会生效。但这说法比较片面,要分具体情况。...,并且在同类中调用了非事务方法 a() 和事务方法 b(),当 b() 抛出异常时,a() 和 b() 的事务都不会生效。...要想 b() 方法的事务生效也容易,最简单的方法将它剥离放在独立的Service类注入使用,交给spring管理就行了。...,例如 testMerge() 方法未开启事务调用 testB() 方法,那么将抛出异常;testMerge() 开启事务调用 testB() 方法,则加入当前事务。

    22510

    三问Spring事务:解决什么问题?如何解决?存在什么问题?

    下面我们看下Spring事务中定义的抽象接口。...声明式事务原理 Spring事务会为@Transaction标注的方法的类生成AOP增强的动态代理类对象,并且在调用目标方法的拦截链中加入TransactionInterceptor进行环绕增加,实现事务管理...3.2 自调用失效 当通过在Bean的内部方法直接调用带有@Transactional的方法时,@Transactional将失效,例如: public void saveAB(A a, B b) {...public void saveB(B b) { dao.saveB(b); } 在saveAB中调用saveA和saveB方法,两者的@Transactional都将失效。...这是因为Spring事务的实现基于代理类,当在内部直接调用方法时,将不会经过代理对象,而是直接调用目标对象的方法,无法被TransactionInterceptor拦截处理。

    95520

    Spring事务为什么会失效?

    「统一的事务抽象」 基于这些问题,Spring抽象了一些事务相关的顶层接口。无论是全局事务还是本地事务,JTA,JDBC还是Hibernate,Spring都使用统一的编程模型。...「下图为Spring事物抽象的核心类」 常用api 接口 PlatformTransactionManager 对事务进行管理 TransactionDefinition 定义事务的相关属性,例如隔离级别...筛选的逻辑我们就先不分析了,后面会再简单提一下 我们来看针对事务增强的逻辑,当执行被@Transactional标记的方法时,会调用到如下方法(TransactionInterceptor#invoke...方法调用@Transactional方法会发生什么?)...因为声明式事物是通过目标方法是否抛出异常来决定是提交事物还是会滚事物的 自调用 当自调用时,方法执行不会经过代理对象,所以会导致事务失效 // 事务失效 @Service public class UserServiceV2Impl

    50341

    发现一个Spring事务的巨坑bug,可是官方都不承认?大家来评评理!

    final的 3.方法内部调用 4.当前实体没有被spring管理 5.错误的spring事务传播特性 6.数据库不支持事务 7.自己吞掉了异常 8.抛出的异常不正确 9.多线程调用 10.嵌套事务多回滚了...AbstractFallbackTransactionAttributeSource类的computeTransactionAttribute方法中有个判断,如果目标方法不是public,则TransactionAttribute...直接调用事务方法updateStatus。...从前面介绍的内容可以知道,updateStatus方法拥有事务的能力是因为spring aop生成代理了对象,但是这种方法直接调用了this对象的方法,所以updateStatus方法不会生成事务。...);     } } 我们可以看到UserService类没有定义@Service注解,即没有交给spring管理bean实例,所以它的add方法也不会生成事务。

    53510

    如何将 @Transactional 事务注解运用到炉火纯青?

    Spring的事务边界是在调用业务方法之前开始的,业务方法执行完毕之后来执行commit or rollback(Spring默认取决于是否抛出runtimeException)。...哈哈~ ---- 第一点要注意的就是在@Transactional注解的方法中,再调用本类中的其他方法method2时,那么method2方法上的@Transactional注解是不!会!生!效!的!...小结只要方法transactionalMethod上有注解,并且方法1和方法2都处于当前事务中(不使用代理调用,方法1和方法2上的@Transactional注解是不生效的;使用代理,需要方法1和方法2...如果想要方法1和方法2均单独保持事务一致性怎么办呢,刚说过了,如果不是用代理调用@Transactional注解是不生效的,所以一定要使用代理调用实现,然后让方法1和方法2分别单独开启新的事务,便OK啦...注解保证的是每个方法处在一个事务,如果有try一定在catch中抛出运行时异常。

    27020

    spring aop实例讲解_java swing 教程

    按照软件重构的思想,如果多个类中出现重复的代码,就应该考虑定义一个共同的抽象类,将这些共同的代码提取到抽象类中,比如Teacher,Student都有username,那么就可以把username及相关的...AOP术语 连接点(Joinpoint) 程序执行的某个特定位置,如某个方法调用前,调用后,方法抛出异常后,这些代码中的特定点称为连接点。...2,AOP分两类,一类可以对方法的参数进行拦截,一类是对方法进行拦截,SpringAOP属于后者,所以Spring的AOP是属于方法级的 4....,用getBean方法必须cast为接口类型,不能为该类的类型 带有@Transactional标注的所有类的任意方法: @within(org.springframework.transaction.annotation.Transactional...(org.springframework.transaction.annotation.Transactional) @within和@target针对类的注解,@annotation是针对方法的注解

    37920

    Java的@Transactional事务回滚

    @Transactional 基本原理概述 在应用系统调用声明@Transactional 的目标方法时,Spring Framework 默认使用 AOP 代理,在代码运行时生成一个代理对象,根据@Transactional...@Transactional 只能被应用到public方法上, 对于其它非public的方法,如果标记了@Transactional也不会报错,但方法没有事务功能 2.Spring团队的建议是你在具体的类...(或类的方法)上使用 @Transactional 注解,而不要使用在类所要实现的任何接口上。...Spring AOP 代理下,只有目标方法由外部调用,目标方法才由 Spring 生成的代理对象来管理,这会造成自调用问题。...若同一类中的其他没有@Transactional 注解的方法内部调用有@Transactional 注解的方法,有@Transactional 注解的方法的事务被忽略,不会发生回滚。

    2.2K30

    @Transactional事务几点注意及其属性Propagation的使用

    不要在接口上声明@Transactional ,而要在具体类的方法上使用 @Transactional 注解,否则注解可能无效。...2.不要图省事,将@Transactional放置在类级的声明中,放在类声明,会使得所有方法都有事务。...3.使用了@Transactional的方法,对同一个类里面的方法调用, @Transactional无效。...比如有一个类Test,它的一个方法A,A再调用Test本类的方法B(不管B是否public还是private),但A没有声明注解事务,而B有。则外部调用A之后,B的事务是不会起作用的。...(经常在这里出错) 4.使用了@Transactional的方法,只能是public,@Transactional注解的方法都是被外部其他类调用才有效,故只能是public。道理和上面的有关联。

    1.4K20

    10 种 Spring 事务失效的常见场景,你知道几个?

    =Propagation.NEVER) //如果其他bean调用这个方法, 在其他bean中声明事务, 那就用事务, 如果其他bean没有声明事务, 那就不用事务 @Transactional(propagation...、接口方法、类以及类方法上,它可以通过不同的参数来选择什么类型Exception异常下执行回滚或者不回滚操作。...事务方法未被Spring管理 如果事务方法所在的类没有注册到Spring IOC容器中,也就是说,事务方法所在类并没有被Spring管理,则Spring事务会失效,举个例子: public class...但如果某个方法用final修饰了,那么在它的代理类中,就无法重写该方法,从而无法添加事务功能。这种情况事务就会在Spring中失效。...同一个类中的方法相互调用 @Service public class OrderServiceImpl extends ServiceImpl implements

    1.4K20

    从入门到精通---深入剖析Spring DAO

    以下是一些关键的JDBC抽象类和方法:JdbcTemplate:是Spring JDBC抽象模块的核心类,提供了多种操作数据库的方法。DataSourceUtils:用于获取和释放数据库连接的工具类。...在afterPropertiesSet方法中,这些支持类会检查模板对象和数据源是否被正确设置,否则将抛出异常。...通过Enhancer类,我们可以为目标对象生成一个代理对象。当调用代理对象的方法时,intercept方法会被自动调用,从而执行事务管理的逻辑。...当该方法执行时,Spring会自动开启一个事务,并在方法执行完毕后提交事务。如果在方法执行过程中抛出了异常,Spring会自动回滚事务。...该切点表达式匹配com.example.service包下所有类的所有方法。当这些方法执行前,logBefore方法会被自动调用,从而记录日志信息。

    7521

    Spring声明式事务、编程式事务一文打尽

    你应该几乎从不会使用这个类,除非当前的代码必须通过一个标准的JDBC数据源接口调用实现。在这个场景中,这些代码是有用的,但是它参与了Spring管理的事务。你可以使用高级的抽象编写新的代码。...这意味着自身调用(实际上,目标对象的一个方法调用该目标对象的另一个方法)在运行时是不会产生真实事务的,即使被调用的方法被@Transactional标注了。...更多关于通知顺序的信息可以参考Spring AOP ??? 默认处理@Transactional注解的通知模式是proxy,只允许通过代理拦截调用。同一类内的本地调用不能以这种方式被拦截。...类中方法的@Transactional注解指定了类中的public方法的默认的事务语义。 类中方法的@Transactional注解覆盖了类中(如果指定了的话)的事务语义。...中自带的一个事务回调实现抽象类 事务回调中的代码可以调用TransactionStatus的 setRollbackOnly()方法回滚事务: transactionTemplate.execute(new

    1.1K00

    spring(基础24) Spring注解@Transactional配置事务

    @Transactional 可以作用于接口、接口方法、类以及类方法上。...虽然 @Transactional 注解可以作用于接口、接口方法、类以及类方法上,但是 Spring 建议不要在接口或者接口方法上使用该注解,因为这只有在使用基于接口的代理时它才会生效。...默认情况下,只有来自外部的方法调用才会被AOP代理捕获,也就是,类内部方法调用本类内部的其他方法并不会引起事务行为,即使被调用方法使用@Transactional注解进行修饰。...3.使用了@Transactional的方法,对同一个类里面的方法调用, @Transactional无效。...(经常在这里出错) 4.使用了@Transactional的方法,只能是public,@Transactional注解的方法都是被外部其他类调用才有效,故只能是public。道理和上面的有关联。

    70620
    领券