设置DB连接属性的不同方法

时间:2016-03-21 17:58:35

标签: java mysql hibernate properties spring-boot

尝试将connectionProperties设置为"useUnicode=yes;characterEncoding=utf8;"时,它之间有什么区别:

@Bean
public DataSource dataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    Properties properties = new Properties();
    properties.setProperty("useUnicode", true);
    properties.setProperty("characterEncoding", "UTF-8"); // UTF-8 or utf8?
    dataSource.setConnectionProperties(properties);
    return dataSource;
}

这个?

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
    LocalContainerEntityManagerFactoryBean entityManagerFactory =
            new LocalContainerEntityManagerFactoryBean();
    Properties properties = new Properties();
    properties.setProperty("hibernate.connection.useUnicode", true);
    properties.setProperty("hibernate.connection.characterEncoding", "UTF-8"); // UTF-8 or utf8?
    entityManagerFactory.setJpaProperties(properties);
    return entityManagerFactory;
}

甚至是第三种方式,只需添加它们' raw'到URL:

jdbc:mysql://localhost:3306/?useUnicode=yes&characterEncoding=UTF-8

1 个答案:

答案 0 :(得分:1)

据我所知,这些传递连接参数的方法没有区别。

  1. 有数据源的配置参数,它们将在创建连接时传递给'DriverManager.getConnection()'。

  2. 所有连接属性'hibernate.connection。'用于传递给'DriverManager.getConnection()'。在大多数情况下,它将在第一个场景中将属性内部传递给数据源。

  3. 是的,你可以通过在jdbc url中声明它们来传递所有必需的参数。