Я возвращаюсь в мир Java, и я пытаюсь настроить новое веб-приложение Spring с JPA, Hibernate и PostgreSQL.
Я нашел много старых примеров с различными файлами конфигурации XML, и мне интересно, есть ли предпочтительный новый способ выполнить эту конфигурацию, не полагаясь на создание файлов XML.
Некоторые из вещей, которые мне нужно настроить, это диалект hibernate sql, драйвер и т.д.
Поместите следующие фрагменты в класс, аннотированный с помощью @Configuration
и @EnableTransactionManagement
Hibernate/JPA (отредактируйте строку PackageToScan):
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
em.setPackagesToScan(new String[] { "com.XY.model" });
JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
em.setJpaProperties(additionalProperties());
return em;
}
Properties additionalProperties() {
Properties properties = new Properties();
properties.setProperty("hibernate.hbm2ddl.auto", "update");
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQL9Dialect");
properties.setProperty("hibernate.show_sql", "true");
return properties;
}
DataSource (изменить имя пользователя, пароль и адрес хоста):
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("org.postgresql.Driver");
dataSource.setUrl("jdbc:postgresql://localhost:port/DB_NAME");
dataSource.setUsername("root");
dataSource.setPassword("");
return dataSource;
}
Менеджер транзакций:
@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(emf);
return transactionManager;
}
Если вы собираетесь использовать spring
, я рекомендую использовать Spring Boot
, который предлагает множество автоматических конфигураций. вы можете использовать application.properties
для настройки dialect
и прочее:
spring.datasource.url = <jdbcurl>
spring.datasource.username = <username>
spring.datasource.password = <password>
spring.datasource.driver-class-name = org.postgresql.Driver
Spring Boot предоставляет несколько Стартовых пакетов, которые упрощают добавление банок в ваш путь к классам. Эти Стартовые пакеты просто предоставляют зависимости, которые вам могут понадобиться при разработке конкретного типа приложений. Поскольку вы разрабатываете, возможно, веб-приложение, требующее доступа к данным, вы должны добавить их в свой pom.xml
:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.1.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
</dependencies>
В принципе, spring boot пытается угадать, как вы захотите настроить приложение, основываясь на добавленных jar-зависимостях. spring-boot-starter-data-jpa
, предоставляет следующие ключевые зависимости:
Вы можете явно настроить параметры JPA с помощью свойств spring.jpa.*
. Например, чтобы создавать и удалять таблицы, вы можете добавить следующее к application.properties
:
spring.jpa.hibernate.ddl-auto=create-drop
Вы можете узнать больше о spring boot здесь
application.properties
. Вы также можете использовать YAML-файлы, переменные окружения и аргументы командной строки для настройки вашего приложения.