• Какие примеры правильного Java кода можно привести?

    @sirs
    Что-то мне подсказывает, что вы ищете серебряную пулю, но ее не существует.
    Нет такого понятия как идеальный код, идеальный паттерн, идеальная обработка исключений и т.д.
    Каждый паттерн, каждое архитектурное решение отлично подходит под какого-то круга задач, но этот круг задач всегда ограничен. Нелья написать код и сказать, что это эталон. Если все так было просто, задачу написания кода давно бы уже автоматизировали на 100%.
    То, что вы ищете, может придти только с опытом и со временем.
    Примеры решения конкретных проблем - ищите на stackoverflow, "красивое" оформление кода - в опенсорсных фреймворках на гитхабе (https://github.com/spring-projects/spring-framework).
    Ответ написан
    2 комментария
  • В чем разница создания объекта в Java так, или так?

    @sirs
    Нет никакой разницы. Объекты одинаковые.
    Ответ написан
    Комментировать
  • Как сделать индекс по заданному тексту, и как по этому индексу потом искать?

    @sirs
    Тогда для быстрого старта я предлагаю вам использовать HashMap. В качестве ключей используете ключевые слова из названия программ, например:

    Map<String, List<Software>> dictionary = new HashMap();
            List<Software> list = new ArrayList<Software>();
            programs.add(new Software("Программуля плюс"));
            programs.add(new Software("Программуля для детей"));
            programs.add(new Software("Автобусы. Программуля"));
            dictionary.put("Программуля", list);

    и т.д.
    Все ваши эталонные названия программ дробите на отдельные слова, объявляете каждое такое слово keywords. Тут нужно вводить ограничения на такие слова, например не менее 3 букв и только буквы и т.п. - тут вы должны сами определиться. Далее составляете списки программ, в которых встречаются такие ключевые слова, проверить если ли такая подстрока в строке - str1.toLowerCase().contains(str2.toLowerCase()).
    Поиск в полученном словаре просто по ключу dictionary.get("Программуля "); - вернет вам список программ, в которых встречается искомая подстрока. Тут тоже перед тем как опрашивать - можно слегка оптимизировать, например привести к одному регистру, убрать пробелы в начале и конце и т.д.
    Это самая простая реализация. Она не будет учитывать "похожие" слова, только совпадение подстроки в строке.
    Сделайте все на интерфейсах, в процессе по линкам выше наберетесь знаний и сделаете более крутую реализацию, оставив интерфейс старым, подменив только реализацию.
    Ответ написан
    4 комментария
  • Насколько полезен Hibernate? Сильно ли он упрощает работу?

    @sirs
    Полезен или нет зависит от вашего проекта. Если у вас парочка сущностей и 10 методов, в которых идёт обращение к базе - тогда хибернейт вам не нужен. Если у вас большой, растущий проект, где десятки и сотни сущностей и много CRUD операций - без JPA, hibernate, spring data и т.д. вам не обойтись. Хибернейт сильно упрощает жизнь в простых вещах, но сильно усложняет в сложных. Также можно рассмотреть профит применения хибернейта как получение кэша нескольких уровней из коробки.
    Посмотрите литературу в общем по ORM проблеме и JPA, без привязке к конкретной реализации, которой и является хибернейт.

    П.С. А добавлять какой-то код или логику в сеттеры я бы крайне не рекомендовал. Есть набор заповедей хорошего разработчика - SOLID, первый принцип - Single responsibility - "каждый объект должен иметь одну обязанность и эта обязанность должна быть полностью инкапсулирована в класс". А в вашем случае есть какая-то модель/бин - который в полях содержит данные - это и есть его единственная обязанность, а логика по чтению-записи в базу не должна этот объект интересовать в принципе.
    Ответ написан
    Комментировать
  • Какие инструменты/фреймворки разбирать для веба?

    @sirs
    "Предпочтительность' сервера определяется исключительно исходными условиями задачи. Определите что для вашего приложения важно, накидайте 5 главных пунктов и исходя из них уже можно будет выбирать сервер или отказаться от него вовсе.
    Если хотите сделать быстрый старт и есть базовые знания java и понимание как работает веб-приложение - начните со Spring boot. Там же смотрите и Spring mvc, Spring ioc и т.д. Очень популярно и актуально.
    Фронт-енд лучше присматриваться к легковесному аля Angular. Ради интереса попробуйте сначала jsp, оцените недостатки и переходите к более легковесным вещам.
    Ответ написан
    Комментировать
  • Какой стек выбрать для разработки обучающей веб-игры?

    @sirs
    Извечный вопрос :)
    Если цель сделать релиз как можно быстрее - берите Node.js.
    Если цель углубить знания и научиться новому - я бы посоветовал Java + Angular, REST подход.
    Java - потому что большое сообщество, совместимость, легко поддерживать, перспективно.
    С бд выбор нужно делать исходя из того, что будет преобладающими данными в ней, если большие тексты - берите NoSQL, если планируете много других сущностей и структур - берите PostgreSQL. Если ставите целью развитие и тренировку - напишите такой слой сервисов/дао, чтобы можно было легко сменить реализацию, не меняя интерфейса.
    Ответ написан
    Комментировать
  • Наполнение таблицы MySQL Server Java?

    @sirs
    Первый совет - переделайте на PreparedStatement и почитайте про sql-инъекции.
    Во-вторых, в java есть более элегантные способы "склеить" строку, например тот же MessageFormat.format():
    String template= "First={0}, second={1}, third={2} parameters.";
    String foo = MessageFormat.format(template, "1234567890","Qq4443123505", "Andrew");
    Результат foo будет "First=1234567890, second=Qq4443123505, third=Andrew parameters."
    И самое главное: если я верно понимаю ваша ошибка связана с тем, что вы не обернули в ковычки параметры в запросе, т.е. у вас получилась строка:
    "insert into users (user_id, user_login,user_password, user_first_name, user_second_name, user_parent_name, user_phone_number, user_profession, administrator) values (1, 1234567890, Qq4443123505, Andrew, Makarov, Valerievich, 0939446910, IT-specialst, super);"

    а нужно:

    insert into users (user_id, user_login,user_password, user_first_name, user_second_name, user_parent_name, user_phone_number, user_profession, administrator) values (1, "1234567890", "Qq4443123505", "Andrew", "Makarov", "Valerievich", "0939446910", "IT-specialst", "super");

    Попробуйте в методе createField добавить:
    ...
    + "\"" + userLogin + "\", "
    + "\"" + userPassword + "\", "
    ...
    и т.д. для всех String параметров.
    Ответ написан
    1 комментарий
  • Какая должна быть архитектура для данного Java EE проекта?

    @sirs
    Пожалуй для вашей задачи jboss - слишком много и не нужно.
    Попробуйте tomcat для начала, а если знакомы со Spring, то очень советую построить приложение на Spring boot.
    Ответ написан
    Комментировать
  • Какие есть инструменты для максимальной автоматизации работы с MySQL на Java?

    @sirs
    Начните смотреть с JPA. Потом постепенно переходите к перечисленным выше его фреймворкам-реализациям и выберите тот, который больше всего вам подходит.
    Ответ написан
    Комментировать
  • Как правильней организовать использование одного и того же класса в нескольких проектах (Java)?

    @sirs
    Если используешь maven - то все становится еще проще.
    Вынеси утилитные классы, которые планируешь переиспользовать в отдельный проектик и собирай его просто mvn clean install, при обновлении инкрементай версию, пиши комментарии если нужно. А в основным проектах просто подключай как dependency с нужной версией.
    Ответ написан
    Комментировать