Настройка JPA / Hibernate/PostgreSQL без XML
Я возвращаюсь в мир Java и пытаюсь настроить новое веб-приложение Spring с JPA, Hibernate и PostgreSQL.
Я нашел много старых примеров с различными файлами конфигурации XML, и мне интересно, есть ли предпочтительный новый способ выполнить эту конфигурацию, не полагаясь на создание XML-файлов.
Некоторые из вещей, которые мне нужно настроить, - это диалект hibernate sql, драйвер и т. д.
2 ответов:
Поместите следующие фрагменты в класс с аннотациями
@Configurationи@EnableTransactionManagementHibernate/JPA (редактирование строки packagesToScan):
@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; }Источник данных (изменить имя пользователя, пароль и адрес хоста):
@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.DriverSpring 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, предоставляет следующие ключевые зависимости:
- Hibernate - одна из самых популярных реализаций JPA.
- Spring Data JPA-упрощает реализацию репозиториев на основе JPA.
- Весна платформы - Core поддержка ОРМ от весенних рамок.
Вы можете явным образом настройте параметры JPA, используя свойства
spring.jpa.*. Например, для создания и удаления таблиц вы можете добавить в свойapplication.properties:spring.jpa.hibernate.ddl-auto=create-dropВы можете прочитать больше о spring boot здесь
Comments