Java 设置数据库连接属性的不同方法

Java 设置数据库连接属性的不同方法,java,mysql,hibernate,properties,spring-boot,Java,Mysql,Hibernate,Properties,Spring Boot,当尝试将连接属性设置为“useUnicode=yes;characterEncoding=utf8;”“”时,这两者之间是否有任何区别: @Bean public DataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); Properties properties = new Properties(); properties.setProper

当尝试将连接属性设置为“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;
}
甚至还有第三种方法,只需将它们“原始”添加到URL:

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

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

  • 存在数据源的配置参数,它们将在创建连接时传递给“DriverManager.getConnection()”

  • 所有连接属性“hibernate.connection.”也用于传递给“DriverManager.getConnection()”。在大多数情况下,与第一个场景中一样,它将是属性到数据源的内部传递

  • 是的,您可以通过在JDBCURL中声明来传递所有必需的参数