在 Spring Boot 应用程序中更改 autocommit=true 的优点和缺点?

2023-12-20

对我来说,自动提交似乎完全被 Spring-Hibernate 配置覆盖,并且这个属性在这样的配置中绝对不起任何作用,但我想以某种方式确认这一点。

Spring引导1.5.10.RELEASE版本。数据库是PostgreSQL 9.5.6。

数据源配置

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.PlatformTransactionManager;

import javax.persistence.EntityManagerFactory;
import java.util.Properties;

@Configuration
public class DataSourceConfig {

    private Logger logger = LoggerFactory.getLogger(DataSourceConfig.class);

    @Bean(name = "dataSource")
    public DriverManagerDataSource dataSource() {
        DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
        driverManagerDataSource.setDriverClassName(driver);
        driverManagerDataSource.setUrl(url);
        driverManagerDataSource.setUsername(username);
        driverManagerDataSource.setPassword(password);
        return driverManagerDataSource;
    }

    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
        LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
        em.setDataSource(dataSource());
        em.setPackagesToScan(new String[] { domainModelNamespace });
        em.setJpaProperties(additionalProperties());

        JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        em.setJpaVendorAdapter(vendorAdapter);

        return em;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation(){
        return new PersistenceExceptionTranslationPostProcessor();
    }

    @Bean
    public PlatformTransactionManager transactionManager(EntityManagerFactory emf){
        JpaTransactionManager transactionManager = new JpaTransactionManager();
        transactionManager.setEntityManagerFactory(emf);

        return transactionManager;
    }

    Properties additionalProperties() {
        Properties properties = new Properties();
        properties.setProperty("hibernate.show_sql", showSql);
        properties.setProperty("hibernate.dialect", dialect);
        properties.setProperty("hibernate.hbm2ddl.auto", hbm2ddl);
        return properties;
    }
}

这是测试方法

import com.phonebook.IntegrationTest;
import org.junit.Assert;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;

import javax.sql.DataSource;
import java.sql.SQLException;

public class DataSourceTesting extends IntegrationTest{

    @Autowired
    private DataSource dataSource;

    Logger logger = LoggerFactory.getLogger(DataSourceTesting.class);

    @Test
    public void testDataSourceConnectionProperties() throws SQLException {
        boolean autoCommit = dataSource.getConnection().getAutoCommit();
        Assert.assertFalse(autoCommit);
    }

}

问题是自动提交在这种情况下意味着什么?在测试中它是开启的

true

以及在@Transactional 方法中在调试模式下检查它。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Spring Boot 应用程序中更改 autocommit=true 的优点和缺点? 的相关文章

随机推荐

  • 使用 Jackson,使用排序键序列化 JSON

    我正在尝试用 Jackson 替换 groovy grails 项目中的自定义 JSON 反 序列化 我无法让 Jackson 输出一个打印精美的 JSON 其中的键按简单的 自然 字母顺序排序 我已经尝试过这个 以及许多变体 mymap
  • Emacs 24 中变量作用域的新规则是什么?

    Emacs 24 现在具有词法范围的变量 当然 它仍然具有动态范围的变量 现在它兼具了两者 我对变量何时具有哪种作用域感到非常困惑 有一个lexical binding控制何时启用词法绑定的变量 我想我读过一些关于defvar现在声明一个动
  • 是什么让钥匙串项目独一无二(在 iOS 中)?

    我的问题涉及 iOS iPhone iPad 中的钥匙串 我认为 但不确定 Mac OS X 下钥匙串的实现提出了相同的问题和相同的答案 iOS 提供五种类型 类别 的钥匙串项目 您必须为键选择这五个值之一kSecClass确定类型 kSe
  • 编辑用户详细信息会创建新用户。设计,Rails 4

    我有一个奇怪的问题 以前创建的表单而不是更新用户详细信息 例如电子邮件或姓名 而是使用给定的详细信息创建新用户 My form 我取自这个代码示例视图 设计 注册 编辑 div class form group div
  • 将计数添加到图例标签

    我正在尝试将计数 百分比添加到饼图的图例标签中 我知道饼图很糟糕 但这不是本文的重点 我想将 Count 的值粘贴到图例上的 Wound Type 标签 但无法弄清楚如何访问以下代码的每次迭代的计数 目标将类似于 裂痕 5 或任何计数 我尝
  • 检查字符串是否不包含另一个字符串

    在 T SQL 中 如何检查一个字符串是否不包含另一个字符串 我有一个nvarchar这可能是 橙子苹果 我想做一个更新 例如 一个列doesn t包含 苹果 如何才能做到这一点 WHERE NOT someColumn LIKE Appl
  • Xcode 自动完成建议 NSArray getter 神秘的“songsAtIndexes”

    我的类中有一个名为 歌曲 的 NSArray 类型的属性 我正在为其创建一个自定义 getter XCode 为我提供了创建方法的选项 songsAtIndexes NSIndexSet indexes 这是什么 为什么 XCode 提供这
  • 在 ViewModel 中获取窗口属性

    我正在构建一个 WPF 应用程序 其中需要从视图模型获取窗口的宽度 高度和位置 我正在使用以下 XAML
  • 无法使用 beautifulsoup 抓取 google 搜索结果

    我想抓取谷歌搜索结果 但每当我尝试这样做时 程序都会返回一个空列表 from bs4 import BeautifulSoup import requests keyWord input Input Your KeyWord url f h
  • ColdFusion:cfspreadsheet 本地化日期格式

    我的问题基本上与this one https stackoverflow com questions 12926719 coldfusion cfspreadsheet reading date incorrectly 但我无法更改 Exc
  • WPF 命中测试矩形区域

    我有一个 WrapPanel 其中包含任意数量的锯齿状大小的元素 我想为我的项目实现拖动选择 如何对一个点进行 HitTest 似乎很明显 但如何找到矩形区域内的所有项目 您可以使用VisualTreeHelper HitTest http
  • XPTY0020:查找树的根:上下文项不是节点

    XSLT 中的这个错误让我难住了 XPTY0020 Finding root of tree the context item is not a node 我的 XSLT 指出错误所在 只是一个普通的旧变量声明
  • 内联 require() 在 requirejs 中工作,但不适用于优化的 almond 构建

    正如标题所示 我的内联 require 调用在非优化的 requirejs 运行中工作 但在使用 grunt 和 almondjs 构建时不起作用 Uncaught Error undefined missing views some vi
  • 为什么我要使用仅限制单一类型的 where 约束?

    所以我在这里查看 MSDN 示例 类型参数的约束 C 编程指南 http msdn microsoft com en us library d5x73970 28v vs 100 29 aspx第一个示例显示了以下泛型类 定义了where单
  • 使用 QPainter 在 Widget 之间画一条线

    我正在开发一个应用程序 我需要能够在两个之间画一条线QWidget对象 我已经尝试了很多事情 但我目前的尝试 我think方向正确 我只是觉得我错过了一些东西 就是拥有包含的小部件 我称之为DrawWidget并持有QGridLayout认
  • 为什么不能使用带有动态参数的匿名函数?

    今天刚遇到这个 匿名函数或方法组不能用作组成部分 动态绑定操作的值 当试图做的时候 static R ifNotNull
  • 如何使用 CodePipeline 删除 S3 中的文件

    我创建了一个 CodePipeline 它从 CodeCommit 存储库获取输入 文件 并将文件部署到 S3 存储桶 当我删除 CodeCommit 存储库中的文件时 管道不会删除相应 S3 存储桶中的文件 简而言之 我希望我的 S3 存
  • SingleChildScrollView“剪切”屏幕

    这是我正在开发的登录页面的屏幕 https ibb co X22g4rc https ibb co X22g4rc 当键盘出现时 它表明存在溢出 这似乎是正常的 https ibb co mzVLJ4f https ibb co mzVLJ
  • jQuery 无法识别 Symfony JSON?

    我正在尝试从 Symfony 获取 JSON 数据 但它似乎无法正常工作 下面是 symfony 代码片段 this gt getResponse gt setHttpHeader Content Type application json
  • 在 Spring Boot 应用程序中更改 autocommit=true 的优点和缺点?

    对我来说 自动提交似乎完全被 Spring Hibernate 配置覆盖 并且这个属性在这样的配置中绝对不起任何作用 但我想以某种方式确认这一点 Spring引导1 5 10 RELEASE版本 数据库是PostgreSQL 9 5 6 数