-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Eugene Maximov edited this page Apr 8, 2015
·
1 revision
Требyется создать библиотеку java-классов, которая позволяла бы сохранять в БД и извлекать произвольные плоские объекты.
Библиотека должна предоставлять:
- Класс, реализующий интерфейс
EntityManager, используемый для сохранения в БД и извлечения из БД объектов, см. приложение 1. - Аннотацию
@Id, которой помечается свойство объекта, соответствующие первичному ключу. Пример использования описан в приложении 2.
Требования к реализации библиотеки:
- Библиотека должна использовать только возможности JavaSE без использования дополнительных библиотек.
- Библиотека должна работатать с БД Postgres через интерфейс JDBC
- Библиотека должна предоставлять функции для соединения с БД и отключения от нее.
- Библиотека должна позволять сохранять в БД и извлекать из БД объекты произвольных плоских классов, в объявлении которых есть свойство, помеченное аннотацией
@Id. "Плоский" означает, что все члены класса имеют один из примитивных типов. - Библиотека должна сама создавать в БД таблицы, соответствующие классам сохраняемых объектов, Имена таблиц соответствуют именам классов объектов, имена колонок соответствуют именам свойств объектов.
- Работа с библиотекой должна быть потокобезопасна.
- Библиотека должна быть документирована по стандарту JavaDoc
- Сборка библиотеки должна производится стандартным инструментом (ant, maven или gradle по выбору)
Рекомендуется задавать вопросы, уточняющие требования к выполнению задания.
public interface EntityManager
{
//сохранить объект
public <T> void persist(T entity) throws Exception;
//Получить объект определенного типа по его ключу
public <T, IdT> T getById(Class<T> type, IdT id) throws Exception;
//Получить все объекты определенного типа
public <T> List<T> getAll(Class<T> type) throws Exception;
}Пример класса для сохранения в БД:
public class SomeEntity {
@Id
private long num;
private String data;
private transient int otherData;
public long getNum(){...};
public String getData(){...};
public long getOtherData(){...};
public void setNum(long num){...};
public void getData(String data){...};
public void setOtherData(long otherData){...};
} Пример сохранения в БД и извлечения из БД:
SomeEntity ent1, ent2, ent3;
ent1=...
ent2=...
ent3=...
...
EntityManager em=...
em.persist(ent1);
long id2=em.persist(ent2);
em.persist(ent3);
...
SomeEntity ent=em.getById(SomeEntity.class, id2);
List<SomeEntity> allEnts=em.getAll(SomeEntity.class);