Настройка JPA / Hibernate/PostgreSQL без XML



Я возвращаюсь в мир Java и пытаюсь настроить новое веб-приложение Spring с JPA, Hibernate и PostgreSQL.



Я нашел много старых примеров с различными файлами конфигурации XML, и мне интересно, есть ли предпочтительный новый способ выполнить эту конфигурацию, не полагаясь на создание XML-файлов.



Некоторые из вещей, которые мне нужно настроить, - это диалект hibernate sql, драйвер и т. д.

996   2  

2 ответов:

Поместите следующие фрагменты в класс с аннотациями @Configuration и @EnableTransactionManagement

Hibernate/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.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, предоставляет следующие ключевые зависимости:

  • Hibernate - одна из самых популярных реализаций JPA.
  • Spring Data JPA-упрощает реализацию репозиториев на основе JPA.
  • Весна платформы - Core поддержка ОРМ от весенних рамок.

Вы можете явным образом настройте параметры JPA, используя свойства spring.jpa.*. Например, для создания и удаления таблиц вы можете добавить в свой application.properties:

spring.jpa.hibernate.ddl-auto=create-drop

Вы можете прочитать больше о spring boot здесь

Comments

    Ничего не найдено.