flamant
flamant

Reputation: 783

springboot application : entities are not created in database

I use a springboot application and try to insert 35000 records in the database

Here is the main class

@SpringBootApplication
@EnableTransactionManagement
public class DemoImmobilierBackApplication implements WebMvcConfigurer {

    public static void main(String[] args) {
        SpringApplication.run(DemoImmobilierBackApplication.class, args);
    }

Here is the service

@Service
public class ReferenceServiceImpl implements ReferenceService {
    
    Logger logger = LoggerFactory.getLogger(ReferenceServiceImpl.class);
    
    @Autowired
    private ReferenceRepository referenceRepository;
    
    
    @Transactional
    public void loadDataBaseCodePostalNomCommune(Map<String,String> tokens) {
        List<CodePostalNomCommune> list = new ArrayList<CodePostalNomCommune>();
        Iterator it = tokens.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry pair = (Map.Entry)it.next();
            list.add(new CodePostalNomCommune((String)pair.getKey(), (String)pair.getValue()));
        }
        referenceRepository.persistCodePostalNomCommune(list);
    }
}

here is the repository

@Repository
public interface ReferenceRepository {
    
    void persistCodePostalNomCommune(List<CodePostalNomCommune> list);

}
and 

public class ReferenceRepositoryImpl implements ReferenceRepository {
    
    Logger logger = LoggerFactory.getLogger(ReferenceRepositoryImpl.class);

    @PersistenceContext
    private EntityManager em;

    
    @Override
    @Transactional
    public void persistCodePostalNomCommune(List<CodePostalNomCommune> list) {

        logger.info("List<CodePostalNomCommune> SIZE="+list.size());
        int i = 0;
        for (CodePostalNomCommune codePostalNomCommune : list) {
            em.persist(codePostalNomCommune);
            i++;
            if (i%20 == 0 ) {
                em.flush();
                em.clear();

            }
        } 
    }
}

But no data is created in mysql database

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim. Pellentesque congue. Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue. Praesent egestas leo in pede. Praesent blandit odio eu enim. Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum. Maecenas adipiscing ante non diam sodales hendrerit.

Upvotes: 0

Views: 83

Answers (1)

flamant
flamant

Reputation: 783

I found the solution. The datasource was badly configured. In the class of main method, I added the following

@Bean
public DataSource dataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();


dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUsername("root");
dataSource.setPassword("password");
dataSource.setUrl(
  "jdbc:mysql://localhost:3306/testdb?createDatabaseIfNotExist=true&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"); 

return dataSource;

}

Upvotes: 1

Related Questions