diff --git a/pom.xml b/pom.xml
index 1a9abf990f26d4c6d2c8a30f0748409363def826..d4d43580c23a5888bb838a1048311b0e39dcf67e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,7 +35,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>1.5.13.RELEASE</version>
+        <version>2.0.9.RELEASE</version>
         <relativePath/>
     </parent>
 
@@ -118,7 +118,7 @@
         <dependency>
             <groupId>org.jadira.usertype</groupId>
             <artifactId>usertype.core</artifactId>
-            <version>5.0.0.GA</version>
+            <version>6.0.1.GA</version>
         </dependency>
 
         <dependency>
diff --git a/src/main/java/de/deadlocker8/budgetmaster/Main.java b/src/main/java/de/deadlocker8/budgetmaster/Main.java
index 2a938d2893f2c720613f80703568f5abc46930ec..5930e0199891a549192d52405c73db2dedc66d6a 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/Main.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/Main.java
@@ -11,7 +11,7 @@ import org.springframework.boot.ApplicationArguments;
 import org.springframework.boot.ApplicationRunner;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.support.SpringBootServletInitializer;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
 import org.springframework.scheduling.annotation.EnableScheduling;
 
 import java.io.IOException;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java
index ff9f7084e264476c07790859dbfdba1016f11529..e57054c9a9177db375814b352023642258a11b6f 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java
@@ -11,6 +11,7 @@ import org.springframework.validation.FieldError;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.Optional;
 
 
 @Controller
@@ -99,13 +100,13 @@ public class AccountController extends BaseController
 	@RequestMapping("/accounts/{ID}/edit")
 	public String editAccount(Model model, @PathVariable("ID") Integer ID)
 	{
-		Account account = accountRepository.findOne(ID);
-		if(account == null)
+		Optional<Account> accountOptional = accountRepository.findById(ID);
+		if(!accountOptional.isPresent())
 		{
 			throw new ResourceNotFoundException();
 		}
 
-		model.addAttribute("account", account);
+		model.addAttribute("account", accountOptional.get());
 		model.addAttribute("settings", settingsService.getSettings());
 		return "accounts/newAccount";
 	}
@@ -141,9 +142,13 @@ public class AccountController extends BaseController
 			else
 			{
 				// edit existing account
-				Account existingAccount = accountRepository.findOne(account.getID());
-				existingAccount.setName(account.getName());
-				accountRepository.save(existingAccount);
+				Optional<Account> existingAccountOptional = accountRepository.findById(account.getID());
+				if(existingAccountOptional.isPresent())
+				{
+					Account existingAccount = existingAccountOptional.get();
+					existingAccount.setName(account.getName());
+					accountRepository.save(existingAccount);
+				}
 			}
 		}
 
diff --git a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java
index 77dc5981a543faf595c31e7ad43f1a9f2b361357..82f8ab2f2fb98f034874de6e548ad237a0907946 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java
@@ -13,6 +13,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 @Service
 public class AccountService implements Resetable
@@ -46,7 +47,13 @@ public class AccountService implements Resetable
 
 	public void deleteAccount(int ID)
 	{
-		Account accountToDelete = accountRepository.findOne(ID);
+		Optional<Account> accountToDeleteOptional = accountRepository.findById(ID);
+		if(!accountToDeleteOptional.isPresent())
+		{
+			return;
+		}
+
+		Account accountToDelete = accountToDeleteOptional.get();
 		transactionService.deleteTransactionsWithAccount(accountToDelete);
 		accountToDelete.setReferringTransactions(new ArrayList<>());
 
@@ -61,7 +68,7 @@ public class AccountService implements Resetable
 			setAsDefaultAccount(accounts.get(0).getID());
 		}
 
-		accountRepository.delete(ID);
+		accountRepository.deleteById(ID);
 	}
 
 	@Override
@@ -113,7 +120,13 @@ public class AccountService implements Resetable
 	{
 		deselectAllAccounts();
 
-		Account accountToSelect = accountRepository.findOne(ID);
+		Optional<Account> accountToSelectOptional = accountRepository.findById(ID);
+		if(!accountToSelectOptional.isPresent())
+		{
+			return;
+		}
+
+		Account accountToSelect = accountToSelectOptional.get();
 		accountToSelect.setSelected(true);
 		accountRepository.save(accountToSelect);
 
@@ -129,7 +142,13 @@ public class AccountService implements Resetable
 	{
 		unsetDefaultForAllAccounts();
 
-		Account accountToSelect = accountRepository.findOne(ID);
+		Optional<Account> accountToSelectOptional = accountRepository.findById(ID);
+		if(!accountToSelectOptional.isPresent())
+		{
+			return;
+		}
+
+		Account accountToSelect = accountToSelectOptional.get();
 		accountToSelect.setDefault(true);
 		accountRepository.save(accountToSelect);
 	}
diff --git a/src/main/java/de/deadlocker8/budgetmaster/advices/SettingsAdvice.java b/src/main/java/de/deadlocker8/budgetmaster/advices/SettingsAdvice.java
index a467906c0f39c2c0229d661986291f43238ad5ec..0efdbd81373d6d00aa7a902d59062fce67268dfe 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/advices/SettingsAdvice.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/advices/SettingsAdvice.java
@@ -6,16 +6,20 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.ControllerAdvice;
 import org.springframework.web.bind.annotation.ModelAttribute;
 
+import java.util.Optional;
+
 @ControllerAdvice
 public class SettingsAdvice
 {
 	@Autowired
 	private SettingsRepository settingsRepository;
 
+	@SuppressWarnings("OptionalGetWithoutIsPresent")
 	@ModelAttribute("settings")
 	public Settings getSettings()
 	{
-		return settingsRepository.findOne(0);
+		Optional<Settings> settingsOptional = settingsRepository.findById(0);
+		return settingsOptional.get();
 	}
 }
 
diff --git a/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryController.java b/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryController.java
index e29fb8dd40cf639fc1d422d795afaf8f8449823f..2678cf37e6c2188a2b911f5f74b90dc3076a5e56 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryController.java
@@ -13,6 +13,7 @@ import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 
@@ -92,12 +93,14 @@ public class CategoryController extends BaseController
 	@RequestMapping("/categories/{ID}/edit")
 	public String editCategory(Model model, @PathVariable("ID") Integer ID)
 	{
-		Category category = categoryService.getRepository().findOne(ID);
-		if(category == null)
+		Optional<Category> categoryOptional = categoryService.getRepository().findById(ID);
+		if(!categoryOptional.isPresent())
 		{
 			throw new ResourceNotFoundException();
 		}
 
+		Category category = categoryOptional.get();
+
 		if(helpers.getCategoryColorList().contains(category.getColor()))
 		{
 			model.addAttribute("customColor", WHITE);
diff --git a/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryService.java b/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryService.java
index 89ee498c6ea668ca81f4005c1c0c52b3dd1ce358..91a5715c4b048ba9d7ae860602d9bf2272a95f76 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryService.java
@@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Optional;
 
 @Service
 public class CategoryService implements Resetable
@@ -32,7 +33,13 @@ public class CategoryService implements Resetable
 
 	public void deleteCategory(int ID, Category newCategory)
 	{
-		Category categoryToDelete = categoryRepository.findOne(ID);
+		Optional<Category> categoryOptional = categoryRepository.findById(ID);
+		if(!categoryOptional.isPresent())
+		{
+			throw new RuntimeException("Can't delete non-existing category with ID: " + ID);
+		}
+
+		Category categoryToDelete = categoryOptional.get();
 		List<Transaction> referringTransactions = categoryToDelete.getReferringTransactions();
 		if(referringTransactions != null)
 		{
@@ -42,7 +49,7 @@ public class CategoryService implements Resetable
 			}
 		}
 
-		categoryRepository.delete(ID);
+		categoryRepository.deleteById(ID);
 	}
 
 	@Override
diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java
index 50b0955c6d4b28ea2b6fabf2c644387710578155..fbc7bcd05a8b5b69583b4f42d76f299ae5ed12e1 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java
@@ -21,6 +21,7 @@ import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Optional;
 import java.util.UUID;
 
 @Controller
@@ -69,7 +70,11 @@ public class ChartController extends BaseController
 	public String showChart(Model model, @ModelAttribute("NewChartSettings") ChartSettings chartSettings)
 	{
 		chartSettings.setFilterConfiguration(filterHelpersService.updateCategoriesAndTags(chartSettings.getFilterConfiguration()));
-		Chart chart = chartService.getRepository().findOne(chartSettings.getChartID());
+		Optional<Chart> chartOptional = chartService.getRepository().findById(chartSettings.getChartID());
+		if(!chartOptional.isPresent())
+		{
+			throw new ResourceNotFoundException();
+		}
 
 		List<Transaction> transactions = transactionService.getTransactionsForAccount(helpers.getCurrentAccount(), chartSettings.getStartDate(), chartSettings.getEndDate(), chartSettings.getFilterConfiguration());
 		String transactionJson = GSON.toJson(transactions);
@@ -77,7 +82,7 @@ public class ChartController extends BaseController
 		model.addAttribute("chartSettings", chartSettings);
 		model.addAttribute("charts", chartService.getRepository().findAllByOrderByNameAsc());
 		model.addAttribute("settings", settingsService.getSettings());
-		model.addAttribute("chart", chart);
+		model.addAttribute("chart", chartOptional.get());
 		model.addAttribute("containerID", UUID.randomUUID());
 		model.addAttribute("transactionData", transactionJson);
 		return "charts/charts";
@@ -103,13 +108,13 @@ public class ChartController extends BaseController
 	@RequestMapping("/charts/{ID}/edit")
 	public String editChart(Model model, @PathVariable("ID") Integer ID)
 	{
-		Chart chart = chartService.getRepository().findOne(ID);
-		if(chart == null)
+		Optional<Chart> chartOptional = chartService.getRepository().findById(ID);
+		if(!chartOptional.isPresent())
 		{
 			throw new ResourceNotFoundException();
 		}
 
-		model.addAttribute("chart", chart);
+		model.addAttribute("chart", chartOptional.get());
 		model.addAttribute("settings", settingsService.getSettings());
 		return "charts/newChart";
 	}
@@ -173,15 +178,20 @@ public class ChartController extends BaseController
 	{
 		if(isDeletable(ID))
 		{
-			chartService.getRepository().delete(ID);
+			chartService.getRepository().deleteById(ID);
 		}
 
 		return "redirect:/charts/manage";
 	}
 
+	@SuppressWarnings("OptionalIsPresent")
 	private boolean isDeletable(Integer ID)
 	{
-		Chart chartToDelete = chartService.getRepository().getOne(ID);
-		return chartToDelete != null && chartToDelete.getType() == ChartType.CUSTOM;
+		Optional<Chart> chartOptional = chartService.getRepository().findById(ID);
+		if(chartOptional.isPresent())
+		{
+			return chartOptional.get().getType() == ChartType.CUSTOM;
+		}
+		return false;
 	}
 }
\ No newline at end of file
diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartService.java b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartService.java
index b79d68949aed3cf2de336d2487c5ab253341a925..5655992fdc56544108201e723b4955d1e632a681 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartService.java
@@ -42,6 +42,7 @@ public class ChartService implements Resetable
 			Chart currentChart = chartRepository.findByName(chart.getName());
 			if(currentChart == null)
 			{
+				chart.setID(defaultCharts.indexOf(chart));
 				chartRepository.save(chart);
 				LOGGER.debug("Created default chart '" + chart.getName() + "'");
 			}
diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/DatePickerController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/DatePickerController.java
index 3f245797cea23172e5fba3377b370b8c2cff461b..f2d82654862421dd7204af4326e6aa9f1af00dec 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/controller/DatePickerController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/controller/DatePickerController.java
@@ -3,6 +3,7 @@ package de.deadlocker8.budgetmaster.controller;
 import de.deadlocker8.budgetmaster.services.DateService;
 import de.deadlocker8.budgetmaster.settings.Settings;
 import de.deadlocker8.budgetmaster.settings.SettingsRepository;
+import de.deadlocker8.budgetmaster.settings.SettingsService;
 import org.joda.time.DateTime;
 import org.joda.time.format.DateTimeFormat;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,20 +21,20 @@ public class DatePickerController extends BaseController
 {
 	private final String DATE_FORMAT = "dd.MM.yy";
 
-	private final SettingsRepository settingsRepository;
+	private final SettingsService settingsService;
 	private final DateService dateService;
 
 	@Autowired
-	public DatePickerController(SettingsRepository settingsRepository, DateService dateService)
+	public DatePickerController(SettingsService settingsService, DateService dateService)
 	{
-		this.settingsRepository = settingsRepository;
+		this.settingsService = settingsService;
 		this.dateService = dateService;
 	}
 
 	@RequestMapping(value = "/previousMonth")
 	public String previousMonth(HttpServletResponse response, @CookieValue("currentDate") String date, @RequestParam("target") String target)
 	{
-		Settings settings = settingsRepository.findOne(0);
+		Settings settings = settingsService.getSettings();
 		DateTime currentDate = DateTime.parse(date, DateTimeFormat.forPattern(DATE_FORMAT).withLocale(settings.getLanguage().getLocale()));
 		currentDate = currentDate.minusMonths(1);
 
@@ -44,7 +45,7 @@ public class DatePickerController extends BaseController
 	@RequestMapping(value = "/nextMonth")
 	public String nextMonth(HttpServletResponse response, @CookieValue("currentDate") String date, @RequestParam("target") String target)
 	{
-		Settings settings = settingsRepository.findOne(0);
+		Settings settings = settingsService.getSettings();
 		DateTime currentDate = DateTime.parse(date, DateTimeFormat.forPattern(DATE_FORMAT).withLocale(settings.getLanguage().getLocale()));
 		currentDate = currentDate.plusMonths(1);
 
@@ -55,7 +56,7 @@ public class DatePickerController extends BaseController
 	@RequestMapping(value = "/setDate")
 	public String setDate(HttpServletResponse response, @CookieValue("currentDate") String date, @RequestParam("target") String target)
 	{
-		Settings settings = settingsRepository.findOne(0);
+		Settings settings = settingsService.getSettings();
 		DateTime currentDate = DateTime.parse(date, DateTimeFormat.forPattern(DATE_FORMAT).withLocale(settings.getLanguage().getLocale()));
 
 		response.addCookie(new Cookie("currentDate", dateService.getDateStringNormal(currentDate)));
diff --git a/src/main/java/de/deadlocker8/budgetmaster/repeating/RepeatingOptionRepository.java b/src/main/java/de/deadlocker8/budgetmaster/repeating/RepeatingOptionRepository.java
index cc2ca138ca7e706dc5b5f2739c4621b93726ba6d..fa2b8ed4530eca6a5e026ed9888a78b338663878 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/repeating/RepeatingOptionRepository.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/repeating/RepeatingOptionRepository.java
@@ -8,6 +8,4 @@ import java.util.List;
 public interface RepeatingOptionRepository extends JpaRepository<RepeatingOption, Integer>
 {
 	List<RepeatingOption> findAllByOrderByStartDateAsc();
-
-	RepeatingOption findOne(Integer ID);
 }
\ No newline at end of file
diff --git a/src/main/java/de/deadlocker8/budgetmaster/reports/settings/ReportSettingsService.java b/src/main/java/de/deadlocker8/budgetmaster/reports/settings/ReportSettingsService.java
index 9d3b3893d1fc82e4eddabd08436f40bf2e6cddd8..903ac1b73aed16d766dcedf6d4d29b1c5de71df8 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/reports/settings/ReportSettingsService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/reports/settings/ReportSettingsService.java
@@ -2,11 +2,14 @@ package de.deadlocker8.budgetmaster.reports.settings;
 
 import de.deadlocker8.budgetmaster.reports.columns.ReportColumn;
 import de.deadlocker8.budgetmaster.reports.columns.ReportColumnService;
+import de.deadlocker8.budgetmaster.utils.ResourceNotFoundException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Optional;
+
 @Service
 public class ReportSettingsService
 {
@@ -30,7 +33,8 @@ public class ReportSettingsService
 
 	private void createDefaultReportSettingsIfNotExists()
 	{
-		if(reportSettingsRepository.findOne(0) == null)
+		Optional<ReportSettings> reportSettingsOptional = reportSettingsRepository.findById(0);
+		if(!reportSettingsOptional.isPresent())
 		{
 			ReportSettings reportSettings = ReportSettings.getDefault();
 			reportSettings.setID(0);
@@ -42,11 +46,19 @@ public class ReportSettingsService
 			reportSettingsRepository.save(reportSettings);
 			LOGGER.debug("Created default report settings");
 		}
-		reportColumnService.createDefaultsWithReportSettings(reportSettingsRepository.findOne(0));
+
+		reportSettingsOptional = reportSettingsRepository.findById(0);
+		if(!reportSettingsOptional.isPresent())
+		{
+			throw new ResourceNotFoundException();
+		}
+
+		reportColumnService.createDefaultsWithReportSettings(reportSettingsOptional.get());
 	}
 
+	@SuppressWarnings("OptionalGetWithoutIsPresent")
 	public ReportSettings getReportSettings()
 	{
-		return reportSettingsRepository.findOne(0);
+		return reportSettingsRepository.findById(0).get();
 	}
 }
\ No newline at end of file
diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
index d27a0155d69d03062dea437d323243a7a38c9d91..bad3156e9f5ec2b532054218e5fd2a5a87bd5ed6 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
@@ -27,7 +27,10 @@ import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.FieldError;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.context.request.RequestAttributes;
 import org.springframework.web.context.request.WebRequest;
 import org.springframework.web.multipart.MultipartFile;
@@ -36,8 +39,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 import java.util.List;
 
@@ -45,7 +47,7 @@ import java.util.List;
 @Controller
 public class SettingsController extends BaseController
 {
-	private final SettingsRepository settingsRepository;
+	private final SettingsService settingsService;
 	private final UserRepository userRepository;
 	private final DatabaseService databaseService;
 	private final AccountService accountService;
@@ -56,9 +58,9 @@ public class SettingsController extends BaseController
 	private final List<Integer> SEARCH_RESULTS_PER_PAGE_OPTIONS = Arrays.asList(10, 20, 25, 30, 50, 100);
 
 	@Autowired
-	public SettingsController(SettingsRepository settingsRepository, UserRepository userRepository, DatabaseService databaseService, AccountService accountService, CategoryService categoryService, ImportService importService, BudgetMasterUpdateService budgetMasterUpdateService)
+	public SettingsController(SettingsService settingsService, UserRepository userRepository, DatabaseService databaseService, AccountService accountService, CategoryService categoryService, ImportService importService, BudgetMasterUpdateService budgetMasterUpdateService)
 	{
-		this.settingsRepository = settingsRepository;
+		this.settingsService = settingsService;
 		this.userRepository = userRepository;
 		this.databaseService = databaseService;
 		this.accountService = accountService;
@@ -70,7 +72,7 @@ public class SettingsController extends BaseController
 	@RequestMapping("/settings")
 	public String settings(WebRequest request, Model model)
 	{
-		model.addAttribute("settings", settingsRepository.findOne(0));
+		model.addAttribute("settings", settingsService.getSettings());
 		model.addAttribute("searchResultsPerPageOptions", SEARCH_RESULTS_PER_PAGE_OPTIONS);
 		request.removeAttribute("database", WebRequest.SCOPE_SESSION);
 		return "settings/settings";
@@ -95,6 +97,11 @@ public class SettingsController extends BaseController
 			settings.setBackupReminderActivated(false);
 		}
 
+		if(settings.getAutoBackupActivated() == null)
+		{
+			settings.setAutoBackupActivated(false);
+		}
+
 		if(bindingResult.hasErrors())
 		{
 			model.addAttribute("error", bindingResult);
@@ -113,8 +120,8 @@ public class SettingsController extends BaseController
 				userRepository.save(user);
 			}
 
-			settingsRepository.delete(0);
-			settingsRepository.save(settings);
+			settingsService.getRepository().deleteById(0);
+			settingsService.getRepository().save(settings);
 
 			Localization.load();
 		}
@@ -151,28 +158,21 @@ public class SettingsController extends BaseController
 	{
 		LOGGER.debug("Exporting database...");
 		String data = databaseService.getDatabaseAsJSON();
-		try
-		{
-			byte[] dataBytes = data.getBytes("UTF8");
-			String fileName = "BudgetMasterDatabase_" + DateTime.now().toString("yyyy_MM_dd") + ".json";
-			response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
+		byte[] dataBytes = data.getBytes(StandardCharsets.UTF_8);
+		String fileName = "BudgetMasterDatabase_" + DateTime.now().toString("yyyy_MM_dd") + ".json";
+		response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
 
-			response.setContentType("application/json; charset=UTF-8");
-			response.setContentLength(dataBytes.length);
-			response.setCharacterEncoding("UTF-8");
+		response.setContentType("application/json; charset=UTF-8");
+		response.setContentLength(dataBytes.length);
+		response.setCharacterEncoding("UTF-8");
 
-			try(ServletOutputStream out = response.getOutputStream())
-			{
-				out.write(dataBytes);
-				out.flush();
-				LOGGER.debug("Exporting database DONE");
-			}
-			catch(IOException e)
-			{
-				e.printStackTrace();
-			}
+		try(ServletOutputStream out = response.getOutputStream())
+		{
+			out.write(dataBytes);
+			out.flush();
+			LOGGER.debug("Exporting database DONE");
 		}
-		catch(UnsupportedEncodingException e)
+		catch(IOException e)
 		{
 			e.printStackTrace();
 		}
@@ -184,7 +184,7 @@ public class SettingsController extends BaseController
 		String verificationCode = RandomUtils.generateRandomString(RandomUtils.RandomType.BASE_58, 4, RandomUtils.RandomStringPolicy.UPPER, RandomUtils.RandomStringPolicy.DIGIT);
 		model.addAttribute("deleteDatabase", true);
 		model.addAttribute("verificationCode", verificationCode);
-		model.addAttribute("settings", settingsRepository.findOne(0));
+		model.addAttribute("settings", settingsService.getSettings());
 		model.addAttribute("searchResultsPerPageOptions", SEARCH_RESULTS_PER_PAGE_OPTIONS);
 		return "settings/settings";
 	}
@@ -204,7 +204,7 @@ public class SettingsController extends BaseController
 			return "redirect:/settings/database/requestDelete";
 		}
 
-		model.addAttribute("settings", settingsRepository.findOne(0));
+		model.addAttribute("settings", settingsService.getSettings());
 		model.addAttribute("searchResultsPerPageOptions", SEARCH_RESULTS_PER_PAGE_OPTIONS);
 		return "settings/settings";
 	}
@@ -213,7 +213,7 @@ public class SettingsController extends BaseController
 	public String requestImportDatabase(Model model)
 	{
 		model.addAttribute("importDatabase", true);
-		model.addAttribute("settings", settingsRepository.findOne(0));
+		model.addAttribute("settings", settingsService.getSettings());
 		model.addAttribute("searchResultsPerPageOptions", SEARCH_RESULTS_PER_PAGE_OPTIONS);
 		return "settings/settings";
 	}
@@ -228,7 +228,7 @@ public class SettingsController extends BaseController
 
 		try
 		{
-			String jsonString = new String(file.getBytes(), Charset.forName("UTF-8"));
+			String jsonString = new String(file.getBytes(), StandardCharsets.UTF_8);
 			DatabaseParser importer = new DatabaseParser(jsonString, categoryService.getRepository().findByType(CategoryType.NONE));
 			Database database = importer.parseDatabaseFromJSON();
 
@@ -240,7 +240,7 @@ public class SettingsController extends BaseController
 			e.printStackTrace();
 
 			model.addAttribute("errorImportDatabase", e.getMessage());
-			model.addAttribute("settings", settingsRepository.findOne(0));
+			model.addAttribute("settings", settingsService.getSettings());
 			model.addAttribute("searchResultsPerPageOptions", SEARCH_RESULTS_PER_PAGE_OPTIONS);
 			return "settings/settings";
 		}
@@ -251,7 +251,7 @@ public class SettingsController extends BaseController
 	{
 		model.addAttribute("database", request.getAttribute("database", WebRequest.SCOPE_SESSION));
 		model.addAttribute("availableAccounts", accountService.getAllAccountsAsc());
-		model.addAttribute("settings", settingsRepository.findOne(0));
+		model.addAttribute("settings", settingsService.getSettings());
 		return "settings/import";
 	}
 
@@ -260,7 +260,7 @@ public class SettingsController extends BaseController
 	{
 		importService.importDatabase((Database) request.getAttribute("database", WebRequest.SCOPE_SESSION), accountMatchList);
 		request.removeAttribute("database", RequestAttributes.SCOPE_SESSION);
-		model.addAttribute("settings", settingsRepository.findOne(0));
+		model.addAttribute("settings", settingsService.getSettings());
 		model.addAttribute("searchResultsPerPageOptions", SEARCH_RESULTS_PER_PAGE_OPTIONS);
 		return "settings/settings";
 	}
@@ -277,7 +277,7 @@ public class SettingsController extends BaseController
 	{
 		model.addAttribute("performUpdate", true);
 		model.addAttribute("updateString", Localization.getString("info.text.update", Build.getInstance().getVersionName(), budgetMasterUpdateService.getAvailableVersionString()));
-		model.addAttribute("settings", settingsRepository.findOne(0));
+		model.addAttribute("settings", settingsService.getSettings());
 		model.addAttribute("searchResultsPerPageOptions", SEARCH_RESULTS_PER_PAGE_OPTIONS);
 		return "settings/settings";
 	}
diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsService.java b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsService.java
index 2b925b8ed7b8990e5ead59934cf3df47c8e14f43..e2809159dffdd20b79865a9f4efc5275641618f9 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsService.java
@@ -1,11 +1,14 @@
 package de.deadlocker8.budgetmaster.settings;
 
+import de.deadlocker8.budgetmaster.charts.ChartRepository;
 import org.joda.time.DateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Optional;
+
 @Service
 public class SettingsService
 {
@@ -21,14 +24,20 @@ public class SettingsService
 
 	private void createDefaultSettingsIfNotExists()
 	{
-		if(settingsRepository.findOne(0) == null)
+		if(!settingsRepository.findById(0).isPresent())
 		{
 			settingsRepository.save(Settings.getDefault());
 			LOGGER.debug("Created default settings");
 		}
 
 		Settings defaultSettings = Settings.getDefault();
-		Settings settings = settingsRepository.findOne(0);
+		Optional<Settings> settingsOptional = settingsRepository.findById(0);
+		if(!settingsOptional.isPresent())
+		{
+			throw new RuntimeException("Missing Settings in database");
+		}
+
+		Settings settings = settingsOptional.get();
 		if(settings.getBackupReminderActivated() == null)
 		{
 			settings.setBackupReminderActivated(defaultSettings.getBackupReminderActivated());
@@ -45,20 +54,26 @@ public class SettingsService
 		{
 			settings.setAutoBackupActivated(defaultSettings.getAutoBackupActivated());
 		}
-		settingsRepository.delete(0);
+		settingsRepository.deleteById(0);
 		settingsRepository.save(settings);
 	}
 
+	@SuppressWarnings("OptionalGetWithoutIsPresent")
 	public Settings getSettings()
 	{
-		return settingsRepository.findOne(0);
+		return settingsRepository.findById(0).get();
 	}
 
 	public void updateLastBackupReminderDate()
 	{
 		Settings settings = getSettings();
 		settings.setLastBackupReminderDate(DateTime.now());
-		settingsRepository.delete(0);
+		settingsRepository.deleteById(0);
 		settingsRepository.save(settings);
 	}
+
+	public SettingsRepository getRepository()
+	{
+		return settingsRepository;
+	}
 }
\ No newline at end of file
diff --git a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java
index 7dbf2a1b61e8f733bf17a5e7525701ae219a3005..ff3d7c9fb58a180e5143406388daa924c7f53b03 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java
@@ -31,6 +31,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 
 @Controller
@@ -250,12 +251,14 @@ public class TransactionController extends BaseController
 	@RequestMapping("/transactions/{ID}/edit")
 	public String editTransaction(Model model, @CookieValue("currentDate") String cookieDate, @PathVariable("ID") Integer ID)
 	{
-		Transaction transaction = transactionService.getRepository().findOne(ID);
-		if(transaction == null)
+		Optional<Transaction> transactionOptional = transactionService.getRepository().findById(ID);
+		if(!transactionOptional.isPresent())
 		{
 			throw new ResourceNotFoundException();
 		}
 
+		Transaction transaction = transactionOptional.get();
+
 		// select first transaction in order to provide correct start date for repeating transactions
 		if(transaction.getRepeatingOption() != null)
 		{
diff --git a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java
index f88181ce190d7401dc0b6ca40481c70a235ac1ef..6a1119547d29e508ee40b06c62bd2288865f3e6d 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java
@@ -19,6 +19,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 @Service
 public class TransactionService implements Resetable
@@ -141,21 +142,22 @@ public class TransactionService implements Resetable
 
 	private void deleteTransactionInRepo(Integer ID)
 	{
-		Transaction transactionToDelete = transactionRepository.findOne(ID);
-		if(transactionToDelete == null)
+		Optional<Transaction> transactionOptional = transactionRepository.findById(ID);
+		if(!transactionOptional.isPresent())
 		{
 			LOGGER.debug("Skipping already deleted transaction with ID: " + ID);
 			return;
 		}
+		Transaction transactionToDelete = transactionOptional.get();
 
 		// handle repeating transactions
 		if(transactionToDelete.getRepeatingOption() == null)
 		{
-			transactionRepository.delete(ID);
+			transactionRepository.deleteById(ID);
 		}
 		else
 		{
-			repeatingOptionRepository.delete(transactionToDelete.getRepeatingOption().getID());
+			repeatingOptionRepository.deleteById(transactionToDelete.getRepeatingOption().getID());
 		}
 	}
 
@@ -174,7 +176,8 @@ public class TransactionService implements Resetable
 		}
 	}
 
-	public void deleteTransactionsWithAccount(Account account) {
+	public void deleteTransactionsWithAccount(Account account)
+	{
 		for(Transaction referringTransaction : account.getReferringTransactions())
 		{
 			deleteTransactionInRepo(referringTransaction.getID());
diff --git a/src/main/java/de/deadlocker8/budgetmaster/update/BudgetMasterUpdateService.java b/src/main/java/de/deadlocker8/budgetmaster/update/BudgetMasterUpdateService.java
index ed8e5bee59d7bb98d57d3b418f3f5e0992b46430..9a18d531f7c7d36b003ee17d4063376c04498b0b 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/update/BudgetMasterUpdateService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/update/BudgetMasterUpdateService.java
@@ -15,7 +15,7 @@ import de.thecodelabs.versionizer.service.UpdateService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.ApplicationHome;
+import org.springframework.boot.system.ApplicationHome;
 import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.context.annotation.Bean;
 import org.springframework.scheduling.annotation.Scheduled;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/update/IsExeFileHook.java b/src/main/java/de/deadlocker8/budgetmaster/update/IsExeFileHook.java
index b094cca606f2a0106041c436bd84649780cebed5..7ac9aa82de57df6be3b5f4e4761cf57baa8479b7 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/update/IsExeFileHook.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/update/IsExeFileHook.java
@@ -1,7 +1,7 @@
 package de.deadlocker8.budgetmaster.update;
 
 import de.thecodelabs.utils.util.SystemUtils;
-import org.springframework.boot.ApplicationHome;
+import org.springframework.boot.system.ApplicationHome;
 
 import java.io.File;
 
diff --git a/src/main/java/de/deadlocker8/budgetmaster/update/IsJarFileHook.java b/src/main/java/de/deadlocker8/budgetmaster/update/IsJarFileHook.java
index 6391736b432514eb5c85ae7a25032779bf6ee719..151b78081b29f5268a6ad9ed10e896516acdb8c2 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/update/IsJarFileHook.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/update/IsJarFileHook.java
@@ -1,7 +1,7 @@
 package de.deadlocker8.budgetmaster.update;
 
 import de.thecodelabs.utils.util.SystemUtils;
-import org.springframework.boot.ApplicationHome;
+import org.springframework.boot.system.ApplicationHome;
 
 import java.io.File;
 
diff --git a/src/main/java/de/deadlocker8/budgetmaster/utils/DatabaseConfiguration.java b/src/main/java/de/deadlocker8/budgetmaster/utils/DatabaseConfiguration.java
index 0ef73595148ae2c9402e664d17dc5b6897178636..4ed2efc647a422965615c6aa1e608a4725f95211 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/utils/DatabaseConfiguration.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/utils/DatabaseConfiguration.java
@@ -1,7 +1,7 @@
 package de.deadlocker8.budgetmaster.utils;
 
 import de.deadlocker8.budgetmaster.Main;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
+import org.springframework.boot.jdbc.DataSourceBuilder;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/ImportTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/ImportTest.java
index f39acd459c3d032e00051859250d4c75e7da6ea2..b672db769dc95e3d573897b91b5c73729ec8c165 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/integration/ImportTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/integration/ImportTest.java
@@ -14,8 +14,8 @@ import org.junit.runner.RunWith;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.firefox.FirefoxDriver;
 import org.openqa.selenium.firefox.FirefoxOptions;
-import org.springframework.boot.context.embedded.LocalServerPort;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.web.server.LocalServerPort;
 import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.junit4.SpringRunner;
 
diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/LoginControllerTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/LoginControllerTest.java
index b3f1dbc05ae06ecd5790eb9a5e290c7eb956b07f..93a182888cd22959936e0a44369b3848528aaef8 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/integration/LoginControllerTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/integration/LoginControllerTest.java
@@ -18,8 +18,8 @@ import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.firefox.FirefoxDriver;
 import org.openqa.selenium.firefox.FirefoxOptions;
-import org.springframework.boot.context.embedded.LocalServerPort;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.web.server.LocalServerPort;
 import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.junit4.SpringRunner;
 
diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/SearchTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/SearchTest.java
index 1b4b3004e421f7c9321e041e422a4b6c207a2a5a..e745054732b11fb0c07380fadfdb8d24b7fb0fe2 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/integration/SearchTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/integration/SearchTest.java
@@ -19,8 +19,8 @@ import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.firefox.FirefoxDriver;
 import org.openqa.selenium.firefox.FirefoxOptions;
-import org.springframework.boot.context.embedded.LocalServerPort;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.web.server.LocalServerPort;
 import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.junit4.SpringRunner;
 
diff --git a/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseImportTest.java b/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseImportTest.java
index 681a449b5eb7ddfb194eea3eb33de6c9e626d188..83a579b979b126b2b23cd544475e12de1115718e 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseImportTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseImportTest.java
@@ -28,6 +28,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 import static org.junit.Assert.assertEquals;
 
@@ -79,17 +80,29 @@ public class DatabaseImportTest
 				}
 
 				@Override
-				public List<Category> findAll(Iterable<Integer> iterable)
+				public List<Category> findAllById(Iterable<Integer> iterable)
 				{
 					return null;
 				}
 
 				@Override
-				public <S extends Category> List<S> save(Iterable<S> iterable)
+				public <S extends Category> List<S> saveAll(Iterable<S> iterable)
 				{
 					return null;
 				}
 
+				@Override
+				public Optional<Category> findById(Integer integer)
+				{
+					return Optional.empty();
+				}
+
+				@Override
+				public boolean existsById(Integer integer)
+				{
+					return false;
+				}
+
 				@Override
 				public void flush()
 				{
@@ -121,41 +134,35 @@ public class DatabaseImportTest
 				}
 
 				@Override
-				public <S extends Category> List<S> findAll(Example<S> example)
+				public <S extends Category> Optional<S> findOne(Example<S> example)
 				{
-					return null;
+					return Optional.empty();
 				}
 
 				@Override
-				public <S extends Category> List<S> findAll(Example<S> example, Sort sort)
+				public <S extends Category> List<S> findAll(Example<S> example)
 				{
 					return null;
 				}
 
 				@Override
-				public Page<Category> findAll(Pageable pageable)
+				public <S extends Category> List<S> findAll(Example<S> example, Sort sort)
 				{
 					return null;
 				}
 
 				@Override
-				public <S extends Category> S save(S s)
+				public Page<Category> findAll(Pageable pageable)
 				{
 					return null;
 				}
 
 				@Override
-				public Category findOne(Integer integer)
+				public <S extends Category> S save(S s)
 				{
 					return null;
 				}
 
-				@Override
-				public boolean exists(Integer integer)
-				{
-					return false;
-				}
-
 				@Override
 				public long count()
 				{
@@ -163,7 +170,7 @@ public class DatabaseImportTest
 				}
 
 				@Override
-				public void delete(Integer integer)
+				public void deleteById(Integer integer)
 				{
 
 				}
@@ -175,9 +182,8 @@ public class DatabaseImportTest
 				}
 
 				@Override
-				public void delete(Iterable<? extends Category> iterable)
+				public void deleteAll(Iterable<? extends Category> iterable)
 				{
-
 				}
 
 				@Override
@@ -186,12 +192,6 @@ public class DatabaseImportTest
 
 				}
 
-				@Override
-				public <S extends Category> S findOne(Example<S> example)
-				{
-					return null;
-				}
-
 				@Override
 				public <S extends Category> Page<S> findAll(Example<S> example, Pageable pageable)
 				{
@@ -218,9 +218,9 @@ public class DatabaseImportTest
 			return new TransactionRepository()
 			{
 				@Override
-				public Transaction findOne(Specification<Transaction> specification)
+				public Optional<Transaction> findOne(Specification<Transaction> specification)
 				{
-					return null;
+					return Optional.empty();
 				}
 
 				@Override
@@ -314,17 +314,29 @@ public class DatabaseImportTest
 				}
 
 				@Override
-				public List<Transaction> findAll(Iterable<Integer> iterable)
+				public List<Transaction> findAllById(Iterable<Integer> iterable)
 				{
 					return null;
 				}
 
 				@Override
-				public <S extends Transaction> List<S> save(Iterable<S> iterable)
+				public <S extends Transaction> List<S> saveAll(Iterable<S> iterable)
 				{
 					return null;
 				}
 
+				@Override
+				public Optional<Transaction> findById(Integer integer)
+				{
+					return Optional.empty();
+				}
+
+				@Override
+				public boolean existsById(Integer integer)
+				{
+					return false;
+				}
+
 				@Override
 				public void flush()
 				{
@@ -356,41 +368,35 @@ public class DatabaseImportTest
 				}
 
 				@Override
-				public <S extends Transaction> List<S> findAll(Example<S> example)
+				public <S extends Transaction> Optional<S> findOne(Example<S> example)
 				{
-					return null;
+					return Optional.empty();
 				}
 
 				@Override
-				public <S extends Transaction> List<S> findAll(Example<S> example, Sort sort)
+				public <S extends Transaction> List<S> findAll(Example<S> example)
 				{
 					return null;
 				}
 
 				@Override
-				public Page<Transaction> findAll(Pageable pageable)
+				public <S extends Transaction> List<S> findAll(Example<S> example, Sort sort)
 				{
 					return null;
 				}
 
 				@Override
-				public <S extends Transaction> S save(S s)
+				public Page<Transaction> findAll(Pageable pageable)
 				{
 					return null;
 				}
 
 				@Override
-				public Transaction findOne(Integer integer)
+				public <S extends Transaction> S save(S s)
 				{
 					return null;
 				}
 
-				@Override
-				public boolean exists(Integer integer)
-				{
-					return false;
-				}
-
 				@Override
 				public long count()
 				{
@@ -398,7 +404,7 @@ public class DatabaseImportTest
 				}
 
 				@Override
-				public void delete(Integer integer)
+				public void deleteById(Integer integer)
 				{
 
 				}
@@ -410,7 +416,7 @@ public class DatabaseImportTest
 				}
 
 				@Override
-				public void delete(Iterable<? extends Transaction> iterable)
+				public void deleteAll(Iterable<? extends Transaction> iterable)
 				{
 
 				}
@@ -421,12 +427,6 @@ public class DatabaseImportTest
 
 				}
 
-				@Override
-				public <S extends Transaction> S findOne(Example<S> example)
-				{
-					return null;
-				}
-
 				@Override
 				public <S extends Transaction> Page<S> findAll(Example<S> example, Pageable pageable)
 				{
@@ -477,17 +477,29 @@ public class DatabaseImportTest
 				}
 
 				@Override
-				public List<Tag> findAll(Iterable<Integer> iterable)
+				public List<Tag> findAllById(Iterable<Integer> iterable)
 				{
 					return null;
 				}
 
 				@Override
-				public <S extends Tag> List<S> save(Iterable<S> iterable)
+				public <S extends Tag> List<S> saveAll(Iterable<S> iterable)
 				{
 					return null;
 				}
 
+				@Override
+				public Optional<Tag> findById(Integer integer)
+				{
+					return Optional.empty();
+				}
+
+				@Override
+				public boolean existsById(Integer integer)
+				{
+					return false;
+				}
+
 				@Override
 				public void flush()
 				{
@@ -519,41 +531,35 @@ public class DatabaseImportTest
 				}
 
 				@Override
-				public <S extends Tag> List<S> findAll(Example<S> example)
+				public <S extends Tag> Optional<S> findOne(Example<S> example)
 				{
-					return null;
+					return Optional.empty();
 				}
 
 				@Override
-				public <S extends Tag> List<S> findAll(Example<S> example, Sort sort)
+				public <S extends Tag> List<S> findAll(Example<S> example)
 				{
 					return null;
 				}
 
 				@Override
-				public Page<Tag> findAll(Pageable pageable)
+				public <S extends Tag> List<S> findAll(Example<S> example, Sort sort)
 				{
 					return null;
 				}
 
 				@Override
-				public <S extends Tag> S save(S s)
+				public Page<Tag> findAll(Pageable pageable)
 				{
 					return null;
 				}
 
 				@Override
-				public Tag findOne(Integer integer)
+				public <S extends Tag> S save(S s)
 				{
 					return null;
 				}
 
-				@Override
-				public boolean exists(Integer integer)
-				{
-					return false;
-				}
-
 				@Override
 				public long count()
 				{
@@ -561,7 +567,7 @@ public class DatabaseImportTest
 				}
 
 				@Override
-				public void delete(Integer integer)
+				public void deleteById(Integer integer)
 				{
 
 				}
@@ -573,7 +579,7 @@ public class DatabaseImportTest
 				}
 
 				@Override
-				public void delete(Iterable<? extends Tag> iterable)
+				public void deleteAll(Iterable<? extends Tag> iterable)
 				{
 
 				}
@@ -584,12 +590,6 @@ public class DatabaseImportTest
 
 				}
 
-				@Override
-				public <S extends Tag> S findOne(Example<S> example)
-				{
-					return null;
-				}
-
 				@Override
 				public <S extends Tag> Page<S> findAll(Example<S> example, Pageable pageable)
 				{