Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate: произвольные поля в отображенных в структуру БД объектах. / 25 сообщений из 25, страница 1 из 1
12.10.2011, 11:47
    #37478505
ivanov-void
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
Приветствую!

Возможно- ли определить в отображаемых в структуру реляционной базы данных классах сущностей произвольные, не имеющие к БД прямого отношения поля?
...
Рейтинг: 0 / 0
12.10.2011, 11:53
    #37478518
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
тут смотрите, вроде как аннотация @Transient .
Сам никогда не юзал правда.
...
Рейтинг: 0 / 0
12.10.2011, 12:09
    #37478553
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
Nixicаннотация @Transient
+1
...
Рейтинг: 0 / 0
12.10.2011, 12:20
    #37478573
kiR@ch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
На всякий случай поясню, @Transient будет означать, что поле не будет персистентным, т.е. не будет сохраняться в БД. И соответственно не будет заполняться значением при получении объекта из БД.
...
Рейтинг: 0 / 0
12.10.2011, 13:45
    #37478741
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
ivanov-voidВозможно- ли определить в отображаемых в структуру реляционной базы данных классах сущностей произвольные, не имеющие к БД прямого отношения поля?
В зимнем проекте столкнулся с такой же проблемой. Хотел добавить дополнительные поля, скрыть некоторые и отдать клиенту. Вроде поборол, но это все так как-то неудобно, что перешел на связку POJO -> DTO. Если итог добавления новых полей именно в этом (дальше на клиента), то советую ввести DTO - очень просто, примитивно и есть полный контроль над заполнением структуры.
...
Рейтинг: 0 / 0
12.10.2011, 13:49
    #37478753
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
IDVsbruckВ зимнем проекте столкнулся с такой же проблемой. Хотел добавить дополнительные поля, скрыть некоторые и отдать клиенту. Вроде поборол, но это все так как-то неудобно, что перешел на связку POJO -> DTO. Если итог добавления новых полей именно в этом (дальше на клиента), то советую ввести DTO - очень просто, примитивно и есть полный контроль над заполнением структуры.
Это не обязательно DTO. Возможно какой-то агрегирующий класс со своими свойствами. Для начала нужно ответить на вопрос, если у сущности есть свойства, то по какой причине мы не храним их в базе. Из ответа на этот вопрос может оказатся очевидным как именно нужно разделить сущность и остальные данные.
...
Рейтинг: 0 / 0
12.10.2011, 14:22
    #37478825
ivanov-void
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
Приветствую, Nixic! Приветствую, Blazkowicz! Приветствую, kiR@ch! Приветствую, IDVsbruck!

Вобщем, всем подряд желаю здоровья, как говорится. :-)

Большое спасибо за информацию- действительно, аннотация @Transient помогла:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
...
@ Transient 
 private  String someField;

 public  String getSomeField() {
      return  someField;
}
 private   void  setSomeField(String someField) {
      this .someField = someField; 
}

...

Относительно связки POJO -> агрегирующий класс взял на заметку, спасибо. Возможно, перейдем на нее.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
25.04.2017, 09:49
    #39443865
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
Дабы не плодить темы, спрошу здесь :)

Есть у меня относительно большой Entity объект. Назовем этот класс Product/Продукт
У Продукта есть много полей/свойств, каждый геттером и сеттером, ну в общем обычный Entity с почти 100 свойствами.

Есть задача, сделать так называемые генерируемые свойства, которые будут содержать данные из нескольких полей, либо вычисления, либо конкатенированные строки, или же просто замена true/false значений на Да/Нет в строковом поле.
В общем в Продукт это ну никак нельзя запихивать особенно если поля такие делать без @Transient. Они нужны временно, чтобы отображать на клиенте данные из Продукт и тут же поля с этими "вычисленными" данными.

Получается ли так, что для этого мне нужно создать новый класс ProductDTO (а может и не DTO, не уверен, что это определение сюда подходит, может быть POJO?).
Добавить в него(ProductDTO) все поля из Product, да, именно так все. Вот только не уверен, что будет удобно при добавлении полей в Product каждый раз проверять добавил ли я в ProductDTO это поле. Может тогда и не все они нужны... ?
Добавить в него поля, которые будут в геттерах иметь некую логику связанную с "жонглированием" данными из других полей.
Затем уже все поля отдавать клиенту в UI и "старые" и "новые из DTO".

Но тут же думаю, что надо при работе пользователя с экземпляром ProductDTO, изменения вносить и в Product, а затем и в БД апдейт делать. Получается, нужна какая-то связь типа отдать данные в Entity, подобрать данные из Entity.

Верная ли логика у меня вообще?
...
Рейтинг: 0 / 0
25.04.2017, 10:11
    #39443875
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
NixicВерная ли логика у меня вообще?
MVC
...
Рейтинг: 0 / 0
25.04.2017, 10:30
    #39443894
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
NixicДабы не плодить темы, спрошу здесь :)
Дурацкая идея.

Petro123MVC
Или даже MVVM
...
Рейтинг: 0 / 0
25.04.2017, 10:43
    #39443902
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
В общем задачу решил.
Создал класс
Код: java
1.
ProductPOJO extends Product

добавил в него поле:

Код: java
1.
2.
3.
4.
5.
6.
private String myNewString;

    public String getMyNewString() {
        myNewString = getShortName() + " | " + getName();
        return myNewString;
    }



Перед отдачей данных клиенту
через org.apache.commons.beanutils.BeanUtils скопировал поля из одного бина в новый бин POJO.
Добавил все новые POJO бины в новый List<> и отдал таблице вместо Листа с оригинальными бинами.

В итоге в UI получил новый столбец в таблице с конкатенированными данными из полей Product.

Вопрос только в том, а это и есть так называемый POJO класс? Или я неверно понял этот термин?
...
Рейтинг: 0 / 0
25.04.2017, 10:59
    #39443914
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
NixicВ общем задачу решил.
известно, что любое Г. будет работать.
NixicPOJO бины
есть термин масло-масляное.
Nixic Или я неверно понял этот термин?
неверно. У тебя просто наследник.
...
Рейтинг: 0 / 0
25.04.2017, 11:00
    #39443917
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
Nixic
Вопрос только в том, а это и есть так называемый POJO класс? Или я неверно понял этот термин?

Скорее всего не верно понял. POJO это не паттерн. Это значит "чистый" Java класс, не связанный ни с какими фреймверками.
То есть, этот класс можно использовать, как, например, в EJB, так и в Spring, как в Hadoop, так и в ORM.

По большей части термин POJO был изначально антонимом к EJB. А потом появились аннотации и стало до конца не понятно, ломают ли они принцип POJO или нет.
...
Рейтинг: 0 / 0
25.04.2017, 11:07
    #39443927
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
Petro123известно, что любое Г. будет работать.

А почему сразу так категорично Г. ?
Неправильный подход - это взять данные из бина, передать их посреднику, который их преобразует и передаст в новом виде в UI ?
А как надо сделать чтобы было не Г. ?
...
Рейтинг: 0 / 0
25.04.2017, 11:10
    #39443928
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
NixicА почему сразу так категорично Г. ?
потому что у тебя на пост-ответ №1 и №2 нет реакции)
...
Рейтинг: 0 / 0
25.04.2017, 11:12
    #39443930
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
BlazkowiczПо большей части термин POJO был изначально антонимом к EJB.
+1
POJO = bin но в разных технологиях.
В устной и письменной речи всё меньше и меньше)) LOL
...
Рейтинг: 0 / 0
25.04.2017, 11:14
    #39443932
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
Petro123POJO = bin
bin это кто? может bean?
...
Рейтинг: 0 / 0
25.04.2017, 11:17
    #39443936
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
Petro123NixicА почему сразу так категорично Г. ?
потому что у тебя на пост-ответ №1 и №2 нет реакции)
а какая реакция должна быть?
"Ладно, пошел еще раз перечитаю мвси и посмотрю еще раз мввм" и свалить читать теорию без практики?
Просто эти теории я читал, особенно MVC, а что толку, если ни разу их осознанно не реализовывал/применял и в терминах плаваешь, думал, хоть подскажут, а не будут называть Г-ном.
Ладно, проехали, буду на своем Г. плыть дальше.
...
Рейтинг: 0 / 0
25.04.2017, 11:17
    #39443938
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
BlazkowiczNixic
Вопрос только в том, а это и есть так называемый POJO класс? Или я неверно понял этот термин?

Скорее всего не верно понял. POJO это не паттерн. Это значит "чистый" Java класс, не связанный ни с какими фреймверками.
То есть, этот класс можно использовать, как, например, в EJB, так и в Spring, как в Hadoop, так и в ORM.

По большей части термин POJO был изначально антонимом к EJB. А потом появились аннотации и стало до конца не понятно, ломают ли они принцип POJO или нет.
Спасибо
...
Рейтинг: 0 / 0
25.04.2017, 11:18
    #39443939
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
am_sasabin это кто? может bean?
да)
...
Рейтинг: 0 / 0
25.04.2017, 12:00
    #39443970
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public class ProductXXX? extends Product {

    private String myNewString;

    public String getMyNewString() {
        myNewString = getShortName() + " | " + getName();
        return myNewString;
    }

    public void setMyNewString(String myNewString) {
        this.myNewString = myNewString;
    }

}



Как же лучше назвать этот класс? :) Чтобы название отображало назначение этого класса, в терминах присущих Java, Java объектам.
По сути, да, он просто расширяет другой класс. Но другой класс это Bean, кроме того, это Entity класс.
И в этом классе я собираюсь использовать операции с данными из Product, помещая результат в поля этого класса.
Так же хочу объявить здесь некоторые классы, которые будут выполнять роль вспомогательных утилит, опять же для оперирования данными.
...
Рейтинг: 0 / 0
25.04.2017, 12:08
    #39443976
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
Petro123POJO = bin но в разных технологиях.
В устной и письменной речи всё меньше и меньше)) LOL
Нет.
...
Рейтинг: 0 / 0
25.04.2017, 12:13
    #39443979
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
NixicКак же лучше назвать этот класс? :) Чтобы название отображало назначение этого класса, в терминах присущих Java, Java объектам.
Вы написали реализацию, но ни слова о предназначении класса или о том как и кем он используется.
Какую задачу класс решает? Кто использует этот класс? UI? Transaction Script? Controller?

NixicПо сути, да, он просто расширяет другой класс.
Почему используется наследование?

NixicТак же хочу объявить здесь некоторые классы, которые будут выполнять роль вспомогательных утилит, опять же для оперирования данными.
Что мешает тоже самое делать с сущностью? Вы столкнулись с проблемой Anemic Domain Model. Вы хотите живой объект с поведением, но по ORM привычке не знаете как же быть с Entity.
Так что же мешает писать логику в Entity?
...
Рейтинг: 0 / 0
25.04.2017, 12:16
    #39443983
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
Много интересного по теме
https://www.google.com/search?q=business logic in jpa entity
Рекомендую ознакомиться.

Выбор правильного решения сильно зависит от того что именно мы пишем. Сервер? Жирный UI? ERP систему? С насколько сложными процессами? И т.д.
...
Рейтинг: 0 / 0
25.04.2017, 12:58
    #39444014
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: произвольные поля в отображенных в структуру БД объектах.
NixicА как надо сделать чтобы было не Г. ?
Сначала озвучить.
Это ваш первый проект? Строго на EJB?
Обычно первый проект делают так чтобы работало)).
Иначе существует 15 способов делать эти самые проекты.
Начали с темы-трупа про доп.поле и закончили вопросом об имени класса и архитектуре проекта.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate: произвольные поля в отображенных в структуру БД объектах. / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]