powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate 5 и Desktop приложение
46 сообщений из 46, показаны все 2 страниц
Hibernate 5 и Desktop приложение
    #39904415
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть JavaFX Desktop приложение.
Возникла необходимость прикрутить бд.

Вот что сделал я:

Настройка самого Хибера:


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
public final class HibernateUtil {

    private final Properties properties;

    private SessionFactory sessionFactory;
    private StandardServiceRegistry standardServiceRegistry;

    private static final Logger LOGGER = LoggerFactory.getLogger(HibernateUtil.class);

    private static HibernateUtil instance;

    private HibernateUtil() {

        this.properties = ApplicationManager.getPropertiesManager().getProperties();

        try {

            //Persistence.createEntityManagerFactory("info.tsyklop.betsautoplacerbot.persistence.entity");

            StandardServiceRegistryBuilder registryBuilder = new StandardServiceRegistryBuilder();

            Map<String, Object> settings = new HashMap<>();

            settings.put(Environment.DRIVER, properties.getDatasourceH2DriverClassName());
            settings.put(Environment.URL, properties.getDatasourceH2Url());
            settings.put(Environment.USER, properties.getDatasourceH2User());
            settings.put(Environment.PASS, properties.getDatasourceH2Password());
            settings.put(Environment.DIALECT, "org.hibernate.dialect.H2Dialect");

            settings.put(Environment.DATASOURCE, "com.zaxxer.hikari.HikariDataSource");

            settings.put(Environment.SHOW_SQL, properties.getProperty("hibernate.show_sql"));
            settings.put(Environment.FORMAT_SQL, properties.getProperty("hibernate.format_sql"));
            settings.put(Environment.HBM2DDL_AUTO, properties.getProperty("hibernate.hbm2ddl.auto"));
            settings.put(Environment.HBM2DDL_CHARSET_NAME, "utf-8");

            settings.put(Environment.CONNECTION_PROVIDER, properties.getProperty("hibernate.connection.provider_class"));

            settings.putAll(properties.getSubset("hibernate.hikari"));

            this.standardServiceRegistry = registryBuilder.applySettings(settings).build();

            MetadataSources metadataSources = new MetadataSources(this.standardServiceRegistry);

            Reflections reflections = new Reflections("info.tsyklop.desktop.persistence.entity");
            Set<Class<? extends AbstractEntity>> entitiesClasses = reflections.getSubTypesOf(AbstractEntity.class);

            for (Class<? extends AbstractEntity> abstractEntity : entitiesClasses) {
                metadataSources.addAnnotatedClass(abstractEntity);
            }

            this.sessionFactory = metadataSources.getMetadataBuilder().build().getSessionFactoryBuilder().build();

        } catch (Exception e) {
            if (this.standardServiceRegistry != null) {
                StandardServiceRegistryBuilder.destroy(this.standardServiceRegistry);
            }
            throw new HibernateException(e);
        }

    }

    public static HibernateUtil getInstance() {
        HibernateUtil localInstance = instance;
        if (localInstance == null) {
            synchronized (HibernateUtil.class) {
                localInstance = instance;
                if (localInstance == null) {
                    instance = localInstance = new HibernateUtil();
                }
            }
        }
        return localInstance;
    }

    public Session getSession() {
        return sessionFactory.openSession();
    }

    public SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public void shutdown() {
        if (this.standardServiceRegistry != null) {
            StandardServiceRegistryBuilder.destroy(this.standardServiceRegistry);
        }
    }

}




Базовый репозиторий для работы с сущностями. От этого репозитория наследуются репозитрии конкретных сущностей.


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
public abstract class BaseRepository<E extends AbstractEntity> implements Repository<E> {

    protected final Class<E> entityClass;

    protected final HibernateUtil hibernateUtil = HibernateUtil.getInstance();

    private static final Logger LOGGER = LoggerFactory.getLogger(BaseRepository.class);

    protected BaseRepository() {
        this.entityClass = (Class<E>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
    }

    public E save(E entity) throws DataSourceException {
        Session session = null;
        try {

            session = openSession();
            session.beginTransaction();

            session.save(entity);

            commit(session);

        } catch (Exception e) {
            showException(e);
            rollback(session);
            rethrow(e);
        } finally {
            closeSession(session);
        }
        return entity;
    }

    public List<E> findAll() throws DataSourceException {

        Session session = null;

        List<E> list = new ArrayList<>();

        try {

            session = openSession();
            session.beginTransaction();

            list.addAll(session.createQuery("SELECT e FROM " + this.entityClass.getName() + " e", this.entityClass).getResultList());

            commit(session);

        } catch (Exception e) {
            showException(e);
            rollback(session);
            rethrow(e);
        } finally {
            closeSession(session);
        }

        return list;
    }

    //public abstract Optional<E> findById(Long id) throws HibernateException;

    public Optional<E> findById(Long id) throws DataSourceException {

        Session session = null;

        Optional<E> entityOptional = Optional.empty();

        try {

            session = openSession();
            session.beginTransaction();

            entityOptional = Optional.of(session.get(entityClass, id));

            commit(session);

        } catch (Exception e) {
            showException(e);
            rollback(session);
            rethrow(e);
        } finally {
            closeSession(session);
        }
        return entityOptional;
    }

    //public abstract boolean update(E entity) throws HibernateException;

    public boolean update(E entity) throws DataSourceException {
        Session session = null;
        try {

            session = openSession();
            session.beginTransaction();

            session.update(entity);

            commit(session);

            return true;

        } catch (Exception e) {
            showException(e);
            rollback(session);
            rethrow(e);
        } finally {
            closeSession(session);
        }
        return false;
    }

    public boolean delete(E entity) throws DataSourceException {
        Session session = null;
        try {

            session = openSession();
            session.beginTransaction();

            session.delete(entity);

            commit(session);

            return true;

        } catch (Exception e) {
            showException(e);
            rollback(session);
            rethrow(e);
        } finally {
            closeSession(session);
        }
        return false;
    }

    public void clear() throws DataSourceException {

        Session session = null;

        try {

            session = openSession();
            session.beginTransaction();

            session.createQuery("DELETE FROM " + entityClass.getName()).executeUpdate();

            commit(session);

        } catch (Exception e) {
            showException(e);
            rollback(session);
            rethrow(e);
        } finally {
            closeSession(session);
        }

    }

    protected Session openSession() {
        return hibernateUtil.getSession();
    }

    protected void commit(Session session) {
        if (session != null) {
            session.getTransaction().commit();
        }
    }

    protected void rollback(Session session) {
        if (session != null) {
            session.getTransaction().rollback();
        }
    }

    protected void closeSession(Session session) {
        if (session != null) {
            try {
                session.close();
            } catch (Exception ignored) {
            }
        }
    }

    protected void showException(Exception e) {
        LOGGER.error(this.entityClass.getName() + " REPOSITORY ERROR", e);
    }

    protected void rethrow(Exception e) {
        throw new DataSourceException(e);
    }

}




Мне не нравится вот такое:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Session session = null;
try {

     session = openSession();
     session.beginTransaction();

     ...

     commit(session);

} catch (Exception e) {
     showException(e);
     rollback(session);
     rethrow(e);
} finally {
     closeSession(session);
}



Мне это нужно писать в каждом методе. + Не получиться сделать вложенные репозитории. Точнее получиться, но плодить сессии во вложенных репозиториях не очень. (Под вложенными я имею в виду поле класса какого-то репозитория)

К примеру у меня есть такой код (да, знаю он не самый лучший):

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
StrategyEntity strategy = StrategyEntity.builder()
             .name(this.nameTextField.getText())
             .build();

this.strategyRepository.save(strategy);

StrategyAmountEntity strategyAmountEntity = StrategyAmountEntity.builder()
            .amount(Double.valueOf(this.amountTextField.getText()))
            .strategy(strategy)
            .build();

this.strategyAmountRepository.save(strategyAmountEntity);

strategy.getStrategyAmounts().add(strategyAmountEntity);

this.strategyRepository.save(strategy);

for (CriteriaEntity rule : this.criteriasListView.getItems()) {
     rule.setStrategy(strategy);
     this.criteriaRepository.save(rule);
     strategy.getCriteries().add(rule);
}



Хибер не дает сохранить StrategyEntity , пока все OneToMany сущности не будут записаны в бд.

Как избежать такого говнокода? может у кого есть варианты как изобразить это получше

P.S. Спринг тут не использую да и он не особо нужен.
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904453
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,

Лямбды?! :-)
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904454
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop
Мне не нравится вот такое:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Session session = null;
try {

     session = openSession();
     session.beginTransaction();

     ...

     commit(session);

} catch (Exception e) {
     showException(e);
     rollback(session);
     rethrow(e);
} finally {
     closeSession(session);
}




Мне это нужно писать в каждом методе.

Убрать в утилитный класс статический. Писал хоть один?
И открывать сессию в конструкторе окна. С окном и закрывать.
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904455
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
Tsyklop,

Лямбды?! :-)
микросервисы)
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904456
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
- в десктопе транзакции длинные. По 8 часов или на каждое окно
- наследование убери. Нет его
- биндинг ВЕЗДЕ
- если для биндинга нужен плоский список, то можно и без хибера его взять. Это не веб.
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904465
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не проще прикрутить спринг и сделать норм настройки в апликейшн проперти и использовать jpa repo
чем городить вот это

я же так понимаю ты на кворке сидишь и делаешь различные приложухи-так кто там будет смотреть что у тебя под капотом- делай как быстрей
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904468
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12,
В десктопе на спринг у виска покрутят
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904674
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp

Убрать в утилитный класс статический. Писал хоть один?
И открывать сессию в конструкторе окна. С окном и закрывать.

Утильные классы писал, но не понимаю как это применить тут? Типа статический метод, в котором что? идею Вашу не уловил
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904676
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
И открывать сессию в конструкторе окна. С окном и закрывать.

Годная идея. Но есть места где обращение к БД идет без окна.
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904679
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
apb12
не проще прикрутить спринг и сделать норм настройки в апликейшн проперти и использовать jpa repo
чем городить вот это

я же так понимаю ты на кворке сидишь и делаешь различные приложухи-так кто там будет смотреть что у тебя под капотом- делай как быстрей


Спринг не юзается с десктопами.
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904681
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
- в десктопе транзакции длинные. По 8 часов или на каждое окно

Тут да.
PetroNotC Sharp
- наследование убери. Нет его

Какие наследование?
PetroNotC Sharp
- биндинг ВЕЗДЕ
- если для биндинга нужен плоский список, то можно и без хибера его взять. Это не веб.

Биндинг чего и с чем?
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904689
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop
apb12
не проще прикрутить спринг и сделать норм настройки в апликейшн проперти и использовать jpa repo
чем городить вот это

я же так понимаю ты на кворке сидишь и делаешь различные приложухи-так кто там будет смотреть что у тебя под капотом- делай как быстрей


Спринг не юзается с десктопами.

а зачем тебе база в десктопе-храни на в файле тогда
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904700
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В начале 2000х мы разрабатывали классическое десктоп приложение под Sybace Power Builder.
И никакого ORM мы не знали и не использовали. И вы не поверите. Это было - прекрасное приложение.
Oracle-cursors полностью заменяли коллекции. Просто надо было научится с этим работать.
И 128 Мегабайт памяти хватало для десктопного приложения с гридами. Формочками и прочим.
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904702
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop
PetroNotC Sharp

Убрать в утилитный класс статический. Писал хоть один?
И открывать сессию в конструкторе окна. С окном и закрывать.

Утильные классы писал, но не понимаю как это применить тут? Типа статический метод, в котором что? идею Вашу не уловил

Будет меньше строк. Например одна - Утилита.старТранзакции.
Тебе это надо?
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904703
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop
PetroNotC Sharp
И открывать сессию в конструкторе окна. С окном и закрывать.

Годная идея. Но есть места где обращение к БД идет без окна.
не бывает. Покажи.
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904707
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop
Биндинг чего и с чем?
поиск гугл "javaFx +binding
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904708
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp

Годная идея. Но есть места где обращение к БД идет без окна.
не бывает. Покажи.[/quot]
После кнопочке старт, которая нахожится в окне, создается новый поток и там происходят действия и там нужна БД,но окна там нет по факту.
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904711
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop
Как избежать такого говнокода?
вопрос по архитектуре. Тогда покажи Модель бд.
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904712
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp

Будет меньше строк. Например одна - Утилита.старТранзакции.
Тебе это надо?

Я вообще хочу что бы старт транзакции, коммит, если все ок, или же роллбэк были в одном месте. В общем как в вебе. Только в вебе прокси, а у меня такой штуки нет. А сейчас мне приходится это писать в каждом методе. + мне нужно делать несколько операций с БД в одной транзакции а не только одну и если в одной будет ошибка - что бы откатились все изменения. Моя модель такого не позволит. Вот и спрашиваю как это сделать.
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904713
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop
После кнопочке старт, которая нахожится в окне, создается новый поток и там происходят действия и там нужна БД,но окна там нет по факту.
поток зачем? Подробнее.
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904715
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
поток зачем? Подробнее.

Автоматизированый робот. Пишет в бд всю инфу которую нашел.
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904716
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
вопрос по архитектуре. Тогда покажи Модель бд.

6 сущностей = 6 таблиц. БД описана как сущности в Java коде. Прям модельки у меня нет
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904718
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop
Я вообще хочу что бы старт транзакции, коммит, если все ок, или же роллбэк были в одном месте.
тогда как делать коммит и отмена на кнопку Ok/cancel?
Где в веб такое?
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904722
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop
Прям модельки у меня нет
рисуй.
Что за сущность StrategyEntity?
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904723
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
В начале 2000х мы разрабатывали классическое десктоп приложение под Sybace Power Builder.
И никакого ORM мы не знали и не использовали. И вы не поверите. Это было - прекрасное приложение.
Oracle-cursors полностью заменяли коллекции. Просто надо было научится с этим работать.
И 128 Мегабайт памяти хватало для десктопного приложения с гридами. Формочками и прочим.

Неправда, специализированные фреймворки тогда тоже были и Sybace Power Builder с ему подобными, как раз представляли собой фреймворки для быстрого создания приложений работающих с БД, современные фреймворки это скорее полуфабрикат, но все хавают, вот в соседней теме про редактируемый грид с выпадающим списком для поля сказали что это оверхэд, в старых фреймворках такое мастером делалось за минуту, а теперь работу которая делается за час джун не может сделать за неделю))
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904725
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
тогда как делать коммит и отмена на кнопку Ok/cancel?


Коммит если операции прошли без ошибок. Роллбэк если возник какой-то эксепшн. Тут окна вообще не при чем.

PetroNotC Sharp
Где в веб такое?

Когда приходит запрос на сервак. Создается транзакция @Transaction . В рамках этой транзакции что-то делается. Если во время выполнения возник эксепшн - происходит роллбэк.
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904726
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(пожимая плечами)

Назовите мне название фреймворка под Power Builder образца 2001 года?
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904727
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop
Автоматизированый робот. Пишет в бд всю инфу которую нашел.

Ясно.
Тогда старт транзакции не в окне, а перед записью в бд.
В чем вопрос?
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904729
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
рисуй. Что за сущность StrategyEntity?


StrategyEntity - Условие при котором робот берет данные.
CriteriaEntity - Условие при котором стратегия считается подходящей

ArbEntity и еще 2 сущности с этой связанные - те самые данные которые записывает робот в БД.
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904731
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop
Создается транзакция @Transaction . В рамках этой транзакции что-то делается. Если во время выполнения возник эксепшн - происходит роллбэк.

Это декларативное управление транзакциями. Здесь это оверхед.
Просто пишем
try
StartTran
Ясно?
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904732
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp

Ясно.
Тогда старт транзакции не в окне, а перед записью в бд.
В чем вопрос?

Как не писать один и тот же код для старта транзакции. И как сделать так что бы в рамках одной транзации делать несколько операций с БД
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904733
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop
StrategyEntity - Условие при котором робот берет данные.
не надо в 40 таблиц добавлять
СтратегияТаблица
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904734
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop
Как не писать один и тот же код для старта транзакции.
какой? Обну строку? Никак.
Там ты писал аннотацию. Тут ОДНУ СТРОКУ
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904737
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop
И как сделать так что бы в рамках одной транзации делать несколько операций с БД

Первый класс вторая четверть или блоки кода
try{
Oper1()
Oper2()
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904739
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
не надо в 40 таблиц добавлять
СтратегияТаблица

Какие 40 таблиц?
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904740
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо же. Дети вообще не умеют писать код десктоп или просто в jar файле. Или просто в консоли.
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904741
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop
Какие 40 таблиц?
ну пять. Полегчало?
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904744
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDev
старых фреймворках такое мастером делалось за минуту
имя сестра!
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904753
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mad_nazgul
Tsyklop,

Лямбды?! :-)
микросервисы)


Микросервисы здесь не нужны.
А вот функция которая на входе принимает лямбду/лямбды с запросами к БД, чтобы выполнить их в рамках одной транзакции, почему бы и нет.
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904756
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mad_nazgul

Микросервисы здесь не нужны.
А вот функция которая на входе принимает лямбду/лямбды с запросами к БД, чтобы выполнить их в рамках одной транзакции, почему бы и нет.


Хорошая идея. Мне нравится. Спасибо!
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904763
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul,
Вы смешные, ей богу.
После beginTran пять методов не в одной транзакции?
Ужас.
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904764
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
(пожимая плечами)

Назовите мне название фреймворка под Power Builder образца 2001 года?

Оно само и есть фреймворк ;)
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904765
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажите мне два метода в одной транзакции и в разных.
Ужас.
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904768
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDev
Оно само и есть фреймворк ;)
соскучился по fieldComboBox in DataSet DataSource?
))))
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904777
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

Сам видишь, джун верещит что не может сделать редактируемый грид с выбором значения поля из списка)), в давние времена это делалось несколькими нажатиями мышки.

В формсах была такая штучка List of Values (LOV) :)
...
Рейтинг: 0 / 0
Hibernate 5 и Desktop приложение
    #39904790
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDev
В формсах была такая штучка List of Values (LOV) :)
щас она в апекс

iOracleDev
Сам видишь, джун верещит что не может сделать редактируемый грид с

Он не может два insert в одной транзакции сделать)
...
Рейтинг: 0 / 0
46 сообщений из 46, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate 5 и Desktop приложение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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