пятница, 15 мая 2015 г.

Простейшее приложение на Spring MVC

        Потихоньку изучаю Spring. Вот решил набросать самое минимальное MVC "приложение" с его использованием. Заодно поучусь заливать проект на Git через IDEA.
Проект будет собираться в gradle.
 Создадим jsp страницу для тестирования. Она будет располагаться в каталоге WEB-INF/jsp/

 test.jsp


Создаем простой контроллер 

Прописываем конфигурацию спринга в DefaultServlet-servlet.xml

Ну и пропишем web.xml
Конечная структура проекта:


Протестируем наше приложение. Запускаем jetty через команду gradle jettyRun и переходим по адресу http://localhost:8887/simplest-springmvc/  смотрим на результат. У меня стандартный порт jetty 8080 оказался занятым, поэтому я заюзал 8887.


 Ссылочка на Git

вторник, 28 апреля 2015 г.

Как создать структуру мета модели в sql?

Как создать структуру мета модели в sql? 

      Сегодня хочу немного рассказать о мета модели в SQL. Впервые я услышал о таком способе построения таблиц от своего куратора, проходя курс обучения Java в компании NetCracker.Сначала это показалось чем то невероятно сложным и не понятным. Была поставлена задача использовать ее в нашем учебном проекте.По приходу домой, я начал усердно мучить гугл в поисках информации по данной теме.Но информации оказалось не так и много. Поэтому я решил написать об этом здесь. Это будет первая статья в моем блоге. Ладно хватит воды, перейдем к делу :)
      Часто ли Вам приходилось использовать много разных сущностей  в базе, для которых приходилось создавать свои таблицы? Товары, пользователи, сделки, контрагенты и т.д..
В итоге в более менее объемном проекте у нас появляется 100500 таблиц. 


      Преимущество мета модели в том что у нас всегда фиксированное количество таблиц.
И нам не нужно добавлять новую таблицу каждый раз когда у нас появляется новая сущность.
Какие таблицы нужно создать, что бы построить мета модель в SQL ?
Нам понадобится всего 4 таблицы.
  1. TYPES (здесь будут все наши типы)
  2. ATTRIBUTES (сюда мы поместим все атрибуты каждого типа)
  3. OBJECT_INSTANCE (тут будут экземпляры конкретного типа)
  4. PARAMETERS (здесь будут значения каждого атрибута для каждого экземпляра)

Если Вам не понятно что к чему, не переживайте, сейчас я разложу все по полочкам.

Таблица TYPES:
      Предназначение этой таблицы указать сущности которые будут использованы в нашей БД.
Создаем нашу таблицу:
      CREATE TABLE TYPES (
           id INT PRIMARY KEY, 
           name VARCHAR2(30)
       );

Таблица ATTRIBUTES:
      Тут будут лежать все атрибуты типов. Например у типа User есть атрибуты name, last, name, age ... Их место именно в этой таблице.
      CREATE TABLE ATTRIBUTES (
          id INT PRIMARY KEY, 
          object_Type_id NOT NULL,
          name VARCHAR2(30),
          FOREIGN KEY (object_Type_id) REFERENCES TYPES(id)
       );

Таблица OBJECT_INSTANCE:
      Когда нам нужно будет создать объект мы должны создать новую запись в этой таблице.
На примере когда создаем User user = new User() мы должны поместить новый экземпляр в эту таблицу.
      Создаем:
      CREATE TABLE OBJECT_INSTANCE (
          id INT PRIMARY KEY , 
          object_Type_id NOT NULL, 
          FOREIGN KEY (object_Type_id) REFERENCES TYPES(id)
      );

Мы уже близко к успеху, последняя таблица PARAMETERS
      Здесь будут указаны значения атрибутов для конкретного экземпляра. Имя, фамилия,  возраст юзера - всему этому добру место в этой табличке.
       CREATE TABLE PARAMETERS (
           id SMALLINT PRIMARY KEY , 
           object_Instance_id NOT NULL,
           attribute_id NOT NULL,
           value VARCHAR2(70),
           FOREIGN KEY (object_instance_id) REFERENCES OBJECT_INSTANCE (id), 
           FOREIGN KEY (attribute_id) REFERENCES ATTRIBUTES (id)
        );




На этом все, основа заложена. Мета модель создана. О том как добавить данные читайте в следующем выпуске.




суббота, 11 апреля 2015 г.

Blog blog = new Blog();


Привет мир.

     Возникло непреодолимое желание, создать свой блог. Блог нужен скорее для самого себя. Часто бывает такое, когда возникает какая то проблема, ты её успешно решаешь, находишь ответы в google или на stackoverflow, а потом эта же проблема возникает еще раз и ты начинаешь поднимать историю, просматривать проект в котором ты эту проблему решил. 
Я подумал что намного  эффективнее оформить свой опыт в виде блога, авось и другим будет полезно.