Mapping JSON to Entity

languages.json
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class Language {

@Id
@Size(min = 3, max = 3)
private String languageCode;

private String languageName;
public Language(String languageCode) {
super();
this.languageCode = languageCode;
}
package com.countries.mehmet;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

import com.countries.mehmet.domain.Language;
import com.countries.mehmet.service.ILanguageService;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.InputStream;
import java.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Component
public class LanguagesCommandLineRunner implements CommandLineRunner {
private static final Logger log =
LoggerFactory.getLogger(LanguagesCommandLineRunner.class);


@Autowired
private ILanguageService languageService;

@Override
public void run(String... args) throws Exception {

loadLanguages();

}

private void loadLanguages() {
ObjectMapper mapper = new ObjectMapper();
TypeReference<List<Language>> typeReference = new TypeReference<List<Language>>(){};

InputStream inputStream = TypeReference.class.getResourceAsStream("/json/languages.json");

try {
List<Language> languages = mapper.readValue(inputStream, typeReference);
languageService.save(languages);
log.info(String.format("%d languages saved to H2 database", languages.size()));

} catch (Exception e) {
log.error("Failed to save languages to db :" + e.getMessage());
}
}
}
import java.util.Iterator;import java.util.List;import com.countries.mehmet.domain.Language;public interface ILanguageService {  List<Language> list();  Iterator<Language> save(List<Language> languages);  Language findById(String id);}

--

--

--

a geek who loves to understand the reasons behind things... and colors... Colors are cool.

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Broken Door Handle https://t.co/JLKRx2MDeM https://t.co/hdNEH8o1LR

Automating Link Tracking for Digital Marketers

The new developer’s manifesto

Database Constraints Using Rails

Generate random password in azure bicep template

Intermediate: Integration of Huawei Crash service in Harmony OS

Getting the most out of Python collections

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Mehmet Akcay

Mehmet Akcay

a geek who loves to understand the reasons behind things... and colors... Colors are cool.

More from Medium

Building Microservices Application Using Spring Boot

Intro to Spring Reactor: Part 1

Read & Write Image Metadata with Java — Part 1

Object-relational Mapping Using JPA, Hibernate and Spring Data JPA.