如何在 Hibernate 中使用 application.properties 设置配置?
How to set configuration using application.properties in Hibernate?
我是 Spring 引导开发的新手。
我做了什么?
我测试了示例 MySQL 与 Spring 启动的集成并测试它工作正常。
我在尝试什么?
我正尝试在现有项目中使用 Hibernate API。所以我创建了一个用于创建 Hibernate sessionFactory 的实用程序 class。
我的代码:
public static void initSessionFactory() {
System.out.print("initSessionFactory");
if (sessionFactory == null) {
try {
Configuration configuration = new Configuration();
//***** I don't want configuration here. ******
// Hibernate settings equivalent to hibernate.cfg.xml's properties
//Properties settings = new Properties();
// settings.put(Environment.DRIVER, "com.mysql.cj.jdbc.Driver");
// settings.put(Environment.URL, "jdbc:mysql://localhost:3306/hibernate_db?useSSL=false");
// settings.put(Environment.USER, "root");
// settings.put(Environment.PASS, "root");
// settings.put(Environment.DIALECT, "org.hibernate.dialect.MySQL5Dialect");
// settings.put(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread");
// settings.put(Environment.HBM2DDL_AUTO, "create-drop");
// settings.put(Environment.SHOW_SQL, "true");
// configuration.setProperties(settings);
//configuration.addAnnotatedClass(Student.class);
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties()).build();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
session = sessionFactory.openSession();
} catch (Exception e) {
e.printStackTrace();
}
}
}
我的application.properties:(没有Hibernate也能正常工作)
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/tcc
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
spring.jpa.show-sql=true
我的问题:
我已经在 application.properties 中配置了 jdbc 环境和其他配置。它工作正常。所以我不想在我的 Java 代码中重复相同的配置。所以我评论了这个配置。
但如果没有 Java 配置,它会抛出“应用程序必须提供 JDBC 连接”错误。
我的问题:
如何从 application.properties 为 Hibernate 设置配置?
当您在 app.properties 中设置以下属性时,Spring 启动将在应用程序启动时准备好您的数据库连接。
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/db_example
spring.datasource.username=springuser
spring.datasource.password=ThePassword
spring.datasource.driver-class-name =com.mysql.jdbc.Driver
即使您不想手动管理数据库连接,也无需创建 SessionFactory , ServiceRegistery
等。
这link也更详细地解释了这些步骤。您将看到没有任何自定义 bean、工厂或注册器来建立数据库连接。请看。
https://spring.io/guides/gs/accessing-data-mysql/
我是 Spring 引导开发的新手。
我做了什么?
我测试了示例 MySQL 与 Spring 启动的集成并测试它工作正常。
我在尝试什么?
我正尝试在现有项目中使用 Hibernate API。所以我创建了一个用于创建 Hibernate sessionFactory 的实用程序 class。
我的代码:
public static void initSessionFactory() {
System.out.print("initSessionFactory");
if (sessionFactory == null) {
try {
Configuration configuration = new Configuration();
//***** I don't want configuration here. ******
// Hibernate settings equivalent to hibernate.cfg.xml's properties
//Properties settings = new Properties();
// settings.put(Environment.DRIVER, "com.mysql.cj.jdbc.Driver");
// settings.put(Environment.URL, "jdbc:mysql://localhost:3306/hibernate_db?useSSL=false");
// settings.put(Environment.USER, "root");
// settings.put(Environment.PASS, "root");
// settings.put(Environment.DIALECT, "org.hibernate.dialect.MySQL5Dialect");
// settings.put(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread");
// settings.put(Environment.HBM2DDL_AUTO, "create-drop");
// settings.put(Environment.SHOW_SQL, "true");
// configuration.setProperties(settings);
//configuration.addAnnotatedClass(Student.class);
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties()).build();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
session = sessionFactory.openSession();
} catch (Exception e) {
e.printStackTrace();
}
}
}
我的application.properties:(没有Hibernate也能正常工作)
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/tcc
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
spring.jpa.show-sql=true
我的问题:
我已经在 application.properties 中配置了 jdbc 环境和其他配置。它工作正常。所以我不想在我的 Java 代码中重复相同的配置。所以我评论了这个配置。
但如果没有 Java 配置,它会抛出“应用程序必须提供 JDBC 连接”错误。
我的问题:
如何从 application.properties 为 Hibernate 设置配置?
当您在 app.properties 中设置以下属性时,Spring 启动将在应用程序启动时准备好您的数据库连接。
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/db_example
spring.datasource.username=springuser
spring.datasource.password=ThePassword
spring.datasource.driver-class-name =com.mysql.jdbc.Driver
即使您不想手动管理数据库连接,也无需创建 SessionFactory , ServiceRegistery
等。
这link也更详细地解释了这些步骤。您将看到没有任何自定义 bean、工厂或注册器来建立数据库连接。请看。 https://spring.io/guides/gs/accessing-data-mysql/