作者回复: B可以是NESTED也可以是REQUIRES_NEW,要看你需要什么样的行为。那B正常的,但A回滚了,这时B要回滚么?如果要回滚就是前者,不然后者
作者回复: 没有@Transactional注解,就是没加事务,大部分情况下就是各条SQL单独的事务,比如一条upate语句。假设你用JdbcTemplate来做操作,就会从DataSource里获取连接。有事务的时候,就会用当前事务的连接来做操作。
作者回复: 事务是在连接上的,一个事务开启后的多条SQL都是执行在这个连接上的,不会更换连接。
作者回复: 你都说隔离级别设置为3是,事务隔离级别没有3啊。 ISOLATION_DEFAULT = -1; ISOLATION_READ_UNCOMMITTED = 1; ISOLATION_READ_COMMITTED = 2; ISOLATION_REPEATABLE_READ = 4; ISOLATION_SERIALIZABLE = 8;
作者回复: 其实不用JDBC操作,如果你在线下环境里,用某些客户端连上数据库,select for update锁住某条记录,你的程序在尝试锁定同一条记录时都会卡住或者报错。
作者回复: 就是数据库的,只不过在建立了JDBC连接后,Spring会设置事务的隔离级别,就对这个连接有效,如果不设置,默认就用数据库的。
作者回复: 事务隔离性的设置是在连接上的,不同的连接可以设置不同的隔离性。你说的在数据库上设置,是程序不设置时的默认值。
作者回复: 我想你是在这节课下留的言,那估计是对JDBC也不了解,这块知识你也需要补一下哈,对于JavaEE应用来说数据库相关操作的知识是必须的。
作者回复: 现在的新项目很少会脱离SpringBoot来直接使用Spring,所以我们从一开始就结合SpringBoot来编写程序,可以让大家的工作简单不少。
作者回复: 这个是根据底层的JPA实现来的,Hibernate不支持NESTED。HibernateTransactionManager这个类的注释里有提到过