powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Web-приложение, структура... что изменить, сделать проще, понятнее?
25 сообщений из 80, страница 3 из 4
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602416
unregestered
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123unregesteredВсе sql-скриптыпока нет необходимости писать select вообще.
Так?

Не понял вопроса. Я про модификацию структуры БД и миграцию данных.
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602426
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unregestered,
Нету этого в java.
В шарпе есть.
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602428
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заметил косяк)

Если добавить в сущность User поле:
Код: java
1.
2.
@OneToMany(fetch = FetchType.LAZY)
    private List<Contact> contact = new ArrayList<>();


Кстати, не уверен, что нужно new... поправьте.
То будет вываливаться ошибка:
Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWritableException: блаблабла Could not write JSON: failed to lazily initialize a collection of role: блаблабла

Оказалось нужно добавить в WebConfig менеджера транзакций
Код: java
1.
2.
3.
4.
    @Bean
    public PlatformTransactionManager transactionManager() throws NamingException {
        return new JpaTransactionManager(emf().getObject());
    }


И в нем же выше исправить аннотацию так:
Код: java
1.
@EnableJpaRepositories(basePackages = "com.opalev", entityManagerFactoryRef = "emf", transactionManagerRef = "transactionManager")


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

Какая ж все-таки запутанная схема :)
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602435
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicКакая ж все-таки запутанная схема :)ты же без спринга не пробовал.
Каждому своё.
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602438
unregestered
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123unregestered,
Нету этого в java.
В шарпе есть.

Не врубился: чего нет в джаве.
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602450
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unregestered,
В энтерпрайзе проектах чаще бд уже есть или делается своими инструментами.
Т.е. к этому топику отношения не имеет. IMHO.
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602451
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123NixicКакая ж все-таки запутанная схема :)ты же без спринга не пробовал.
Каждому своё.
Как не пробовал :) - два проекта по 80+ сущностей без спринга)
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602455
unregestered
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123unregestered,
В энтерпрайзе проектах чаще бд уже есть или делается своими инструментами.
Т.е. к этому топику отношения не имеет. IMHO.

Да шо вы говорите. Наверное самозарождается, не иначе.
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602457
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unregesteredPetro123unregestered,
В энтерпрайзе проектах чаще бд уже есть или делается своими инструментами.
Т.е. к этому топику отношения не имеет. IMHO.
Да шо вы говорите. Наверное самозарождается, не иначе.
Имелось ввиду, что когда приходишь на проект не с нуля, то уже есть БД.
или если с нуля, то есть Базисты, БДэшники, которые рулят БД, а джависты пилят под неё свой проект. А потом и то и то подстраивается друг под друга. А не магическое появление БД из мирового эфира))
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602459
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,
Он делает магией hiber.hbm2dll.ShemaExport каждый раз приходя на работу.
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602498
unregestered
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю про что тут речь идёт. В большинстве проектов с которыми работал БД создавалась либо модифицировалась разработчиками.
Ни разу не приходилось кого-нибудь дёргать чтобы БД поменять. Делаются бекапы и мигрируется что нужно.
Админы не в курсе как системы работают, их задача обслуживание, ничего править в БД самовольно они не будут
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602505
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unregesteredАдмины не в курсе как системы работают, их задача обслуживание, ничего править в БД самовольно они не будутну дак маленькая организация).
В большой вам даже логин не дадут на create table, trigger...
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602544
unregestered
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123unregesteredАдмины не в курсе как системы работают, их задача обслуживание, ничего править в БД самовольно они не будутну дак маленькая организация).
В большой вам даже логин не дадут на create table, trigger...

К девелоперской базе есть доступ на запись у разработчиков (иначе как работать). Все скрипты комитятся в гит, которые потом накатываются на продакшен миграционными утилитами.
Что в маленькой, что в большой.
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602558
unregestered
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unregesteredК девелоперской базе есть доступ на запись у разработчиков (иначе как работать). Все скрипты комитятся в гит, которые потом накатываются на продакшен миграционными утилитами.
Что в маленькой, что в большой.

Точнее: скрипты комитятся в гит, делается релиз бренч всего кода (sql, java, файлы). Бренч тестируется на тестовой и затем на UAT (включая load и stress тесты). И затем всё это дело накатывается деплоймент утилитами. Никакого логина не надо: весь деплоймент происходит по нажатию кнопки.

Никто не будет лезть в продакшен базу меняя по наитию триггеры туда-сюда.
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602569
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unregesteredдеплоймент утилитами.кем и с каким логином?
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602602
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OFF
unregesteredНикакого логина не надо: весь деплоймент происходит по нажатию кнопки.вот как вас пускать к БД какого нибудь завода или банка, если вы бд не знаете. Только кнопку.
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602683
unregestered
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123кем и с каким логином?
Например админом. Но продакшен база напрямую не трогается.

Petro123OFF
unregesteredНикакого логина не надо: весь деплоймент происходит по нажатию кнопки.вот как вас пускать к БД какого нибудь завода или банка, если вы бд не знаете. Только кнопку.

Почему? Дев база имеет аналогичную структуру. Это во-первых. А во-вторых есть такая замечательная штука как рид-онли акцесс.
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602686
unregestered
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
privateМожно - на многих языках можно создавать компактно и просто. Например жаваскрипт современный практически не уступает руби по компактности и мощности, а с ТайпСкриптом даже еще и надежней становится с типами. И котлин тоже неплох.

Но почему-то весь реальный код на жава (и котлин там-же) - это портянки как в примере выше. Вот реально не найти на гитхабе проекта на жаве где бы

- не было длиннющих переменных на полстроки, и вообще линий длинных
- кучи скобок
- фактори билдер провайдер медиейтор стратеджи - и т.п.
- хорошо отформатированного кода, где аттрибуты и пр. сгруппировано так чтобы было компактно и легко читать.


Это бывает когда мидл девелоперы начитаются книжек про паттерны и начинают их клепать где не попадя.
А всё остальное: про переменные скобки и пр - от недостатка опыта.
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602701
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unregestered,
Давайте ближе к теме.
Зачем в демке выше писать руками select трали вали?
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602764
unregestered
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123unregestered,
Давайте ближе к теме.
Зачем в демке выше писать руками select трали вали?

Я вам не баба чтобы что-то вам давать
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602767
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unregestered,
Тогда не флуди.
Половину поста верно ты подметил. А про именованные запросы нет.
Удачи!
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602961
unregestered
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что не так с именованными запросами. Ну можно и так ембедить. Самое главное - без критерия апи.
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39602977
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unregesteredА что не так с именованными запросами. Ну можно и так ембедить. Самое главное - без критерия апи.
Там критерия по ТЗ и не нужно.
Но автору пофиг. Он самоустранился.
А зачем нам больше него работать).
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39603009
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123unregesteredА что не так с именованными запросами. Ну можно и так ембедить. Самое главное - без критерия апи.
Там критерия по ТЗ и не нужно.
Но автору пофиг. Он самоустранился.
А зачем нам больше него работать).
Не стыдно и помолчать, коли нечего сказать )

По поводу ТЗ, ТЗ нет, я просто сделал проект для изучения возможностей, для выстраивания костяка так сказать, для какого-то типового для меня лично, проекта.
Кстати, прикрутил HATEOAS прикольная вещь, только вот к Entity оно не прикручивается, там надо расширять класс org.springframework.hateoas.ResourceSupport; А у него уже есть метод getId(), поэтому получается попа.
Выкрутился тем, что создал трансиентное поле в классе сущности:
@Transient
private List<Link> _links;

Link это вот эта вот: org.springframework.hateoas.Link;

Кроме того, оказалось, что Hibernate не любит по умолчанию трансиентные поля и пришлось добавить в конфиг:
hm.disable(Hibernate5Module.Feature.USE_TRANSIENT_ANNOTATION);
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        for (HttpMessageConverter converter : converters) {
            if (converter instanceof org.springframework.http.converter.json.MappingJackson2HttpMessageConverter) {
                ObjectMapper mapper = ((MappingJackson2HttpMessageConverter) converter).getObjectMapper();
                Hibernate5Module hm = new Hibernate5Module();
              hm.disable(Hibernate5Module.Feature.USE_TRANSIENT_ANNOTATION);
                mapper.registerModule(hm);
                // replace Hibernate5Module() with the proper class for your hibernate version.
            }
        }
    }



Ссылку формирую в контроллере так:
Кину с мусором и с кривыми названиями запросов, но суть не в этом. В частности Resource userResource = new Resource(user);
здесь лишнее, но пока пусть лежит, надо изучить получше и потом удалить или как-то использовать.
getUsersContact как бы совсем не контакт, но не суть :))
Код: 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.
 @RequestMapping(value = "usersContact", method = RequestMethod.GET, produces = {MediaType.APPLICATION_JSON_VALUE})
    @ResponseBody
    public List<User> getUsersContact(@RequestParam(value = "userName", required = false) String name) {
        userList.clear();
        userList = Lists.newArrayList(userRepository.findAll());
        List<User> userListWithLinks = new ArrayList<>();
        for (User user : userList) {
            Resource userResource = new Resource(user);
            Link link = linkTo(UserController.class).slash(user.getId()).withSelfRel();
            userResource.add(link);

            User userWithLinks  = (User)userResource.getContent();
            List<Link> links  = userResource.getLinks();
            userWithLinks.set_links(links);

            userListWithLinks.add(userWithLinks);
            Integer id = (Integer) userWithLinks.getId();
            String userName = (String) userWithLinks.getName();
            log.info("id:" + id);
            log.info("name:" + userName);


            contactsList = userWithLinks.getContact();
            if (contactsList != null && !contactsList.isEmpty()) {
                for (Contact c : contactsList) {
                    log.info("Контакт: " + c.getEmail());
                }
            }
        }
        return userListWithLinks;
    }




теперь получилась вот такая вот красотища на выходе :)
...
Рейтинг: 0 / 0
Web-приложение, структура... что изменить, сделать проще, понятнее?
    #39603015
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати Spring Data JPA вообще отличная вещь!
Вот обновление поля например, никаких там апдейт, маппинга и прочего, save и всё! :)
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    @RequestMapping(value = "/updateUserName", method = RequestMethod.GET)
    @ResponseBody
    public List<User> updateUserName(@RequestParam(value = "id", required = false) Integer userId, @RequestParam(value = "name", required = false) String newName) {
        userList.clear();
        User user = userRepository.findById(userId).get();
        if (newName != null && !"".equalsIgnoreCase(newName)) {
            user.setName(newName);
            userRepository.save(user);
        }
        userList.add(user);
        return userList;
    }



Мне прям очень понравилось.
...
Рейтинг: 0 / 0
25 сообщений из 80, страница 3 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / Web-приложение, структура... что изменить, сделать проще, понятнее?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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