Огромный PS, указываю, где хранить в самом простом виде в разделе*
Создаём CRUD приложение (Create Read Update Delete).
интерфейс Crud с методами
interface Crud<T> {
void create(T model);
void update(T model);
T find(Integer id);
void delete(Integer id);
}
// T-типизацация или обобщение
// при имплементации, во всех методах вместо T
// будет стоять класс, который будет имплементировать интерфейс
// в данном случае User или Gift
// так мы достигаем гибкости и нам всё равно, что за класс
класс User, реализующий Crud (то есть, пользователя можно создавать, находить и тд...):
PS. List с генериками (List<?> friends, List<?> gifts), догадайтесь, что должно стоять вместо "?"

и Класс Gift реализующий Crud:

Не забываем ДОБАВИТЬ В POM.XML зависимость apache-logging
На данный момент, одним из самых популярных хэшаторов паролей является технология под названием bcrypt. Можете даже в онлайн-режиме зашифровать свой пароль для Вконтактика прямо на этом сайте.