title: Insert data in h2 database through data.sql file before performing unit testing in spring boot
body: <p>I want to perform unit testing in spring boot+ JPA. For that I created configuration file to create bean for dataSource, all hibernate properties, entityManagerFactory and transactionManager. Everything going perfect. Tables are getting created by model classes. but now I want to insert data in all tables of database for testing through data.sql file.
  I kept data.sql file in src/main/resources but it not loading the file.
  So how can I load data in h2 database before starting with unit testing. </p>
  
  <p>This is my cofiguration file - </p>
  
  <pre><code>
  import java.util.Properties;
  
  import javax.sql.DataSource;
  
  import org.hibernate.cfg.Environment;
  import org.springframework.boot.autoconfigure.domain.EntityScan;
  import org.springframework.context.annotation.Bean;
  import org.springframework.context.annotation.Configuration;
  import org.springframework.context.annotation.PropertySource;
  import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
  import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
  import org.springframework.jdbc.datasource.DriverManagerDataSource;
  import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
  import org.springframework.orm.jpa.JpaTransactionManager;
  import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
  import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
  import org.springframework.transaction.PlatformTransactionManager;
  import org.springframework.transaction.annotation.EnableTransactionManagement;
  
  
  @Configuration
  @EnableJpaRepositories(basePackages = "base_package_name")
  @EnableTransactionManagement
  public class JPAConfig {
  
      @Bean
      public DataSource dataSource() {
          DriverManagerDataSource dataSource = new DriverManagerDataSource();
          dataSource.setDriverClassName("org.h2.Driver");
          dataSource.setUrl("jdbc:h2:mem:myDb;DB_CLOSE_DELAY=-1");
          /*dataSource.setDriverClassName("org.hsqldb.jdbcDriver");
          dataSource.setUrl("jdbc:hsqldb:mem:testdb");*/
          dataSource.setUsername("sa");
          dataSource.setPassword("");
  
          return dataSource;
      }
  
      private Properties hibernateProperties() {
          Properties properties = new Properties();
          properties.put("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
          properties.put("hibernate.hbm2ddl.auto", "create");
          properties.put("hibernate.show_sql", "true");
          properties.put("hibernate.format_sql", "false");
          return properties;
      }
  
      @Bean(name="entityManagerFactory")
      public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean(){
  
          LocalContainerEntityManagerFactoryBean lcemfb
              = new LocalContainerEntityManagerFactoryBean();
  
          lcemfb.setDataSource(this.dataSource());
          lcemfb.setPackagesToScan(new String[] {"Package_to_scan"});
  
          HibernateJpaVendorAdapter va = new HibernateJpaVendorAdapter();
          lcemfb.setJpaVendorAdapter(va);
  
          lcemfb.setJpaProperties(this.hibernateProperties());
  
          lcemfb.afterPropertiesSet();
  
          return lcemfb;
  
      }
  
  
      @Bean
      public PlatformTransactionManager transactionManager(){
  
          JpaTransactionManager tm = new JpaTransactionManager();
  
          tm.setEntityManagerFactory(
              this.entityManagerFactoryBean().getObject() );
  
          return tm;
  
      }
  
      @Bean
      public PersistenceExceptionTranslationPostProcessor exceptionTranslation(){
          return new PersistenceExceptionTranslationPostProcessor();
      }
  }
  
  </code></pre>