Настроить JPA / Hibernate / PostgreSQL без XML

2

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

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

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

Теги:
spring
hibernate
jpa

2 ответа

6
Лучший ответ

Поместите следующие фрагменты в класс, аннотированный с помощью @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;
}
  • 0
    Импортируется ли класс DataSource из javax.sql?
  • 0
    Да, это javax.sql.DataSource. Реализация: org.springframework.jdbc.datasource.DriverManagerDataSource
Показать ещё 1 комментарий
3

Если вы собираетесь использовать 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 Данные JPA - упрощает реализацию репозиториев на основе JPA.
  • Spring ORMs - поддержка Core ORM из spring Framework.

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

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

Вы можете узнать больше о spring boot здесь

  • 0
    Спасибо за исчерпывающий ответ. Является ли application.properties файлом конфигурации?
  • 0
    Да, весенняя загрузка позволяет вам настраивать ваши приложения разными способами, в том числе application.properties . Вы также можете использовать YAML-файлы, переменные окружения и аргументы командной строки для настройки вашего приложения.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню