Если для вашего свойства hibernate.hbm2ddl.auto
установлено значение create
или create-drop
, тогда проще всего это сделать, установив свойство hibernate.hbm2ddl.import_files
с именем файла SQL, содержащим операторы SQL, для загрузки ваших исходных данных в базу данных. схема, например первоначальные пользователи приложения.
Ниже приведен пример метода, который есть в моем классе DatabaseConfig
. Он устанавливает hibernate.hbm2ddl.import_files
свойство с именем файла SQL import_initial_data.sql , которое содержит операторы SQL Insert для загрузки моих исходных данных в схему базы данных.
@Bean
public LocalSessionFactoryBean hibernate5SessionFactoryBean(){
LocalSessionFactoryBean localSessionFactoryBean = new LocalSessionFactoryBean();
localSessionFactoryBean.setDataSource((DataSource) appContext.getBean("DataSource"));
localSessionFactoryBean.setAnnotatedClasses( AppUser.class );
Properties properties = new Properties();
properties.put( "hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
properties.put("hibernate.hbm2ddl.auto","create-drop");
properties.put("hibernate.hbm2ddl.import_files", "import_initial_data.sql");
properties.put("hibernate.show_sql","true");
localSessionFactoryBean.setHibernateProperties(properties);
return localSessionFactoryBean;
}
Это мой AppUser.java
в model
упаковке:
package com.beniregev.model;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import javax.persistence.*;
@Entity
@NoArgsConstructor(access = AccessLevel.PUBLIC)
@AllArgsConstructor(access = AccessLevel.PUBLIC)
public class AppUser {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(nullable = false, unique = true)
private String userName;
@Column(nullable = false)
private String password;
public AppUser(String userName, String password) {
this.userName = userName;
this.password = password;
}
}
Зависимость Maven для ломбок :
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.6</version>
<scope>provided</scope>
</dependency>
Файл import_initial_data.sql , который находится в каталоге resources
:
INSERT INTO appuser(username, password) VALUES ('jesus', 'christ');
INSERT INTO appuser(username, password) VALUES ('mary', 'virgin');
INSERT INTO appuser(username, password) VALUES ('josef', 'who?');
INSERT INTO appuser(username, password) VALUES ('jeremaia', 'profet');
COMMIT;
И результат * SELECT * FROM appuser; *: