Создание CRUD приложения на языке Java с помощью Spring

Поділитися
Вставка
  • Опубліковано 29 лис 2024

КОМЕНТАРІ • 516

  • @МихаилМихаил-ф7у
    @МихаилМихаил-ф7у 3 роки тому +31

    Видео актуально даже в 2021 года... Очень круто... Спасибо!

    • @bagzhansadvakassov1093
      @bagzhansadvakassov1093 3 роки тому

      Как раз подумал актуально ли. Спс за комментарий.

    • @AlejandroFedorov
      @AlejandroFedorov 3 роки тому +1

      и что здесь актуального? написание конфигов в xml файлах? ахринеть как актуально в 2021

    • @kuzd4niil
      @kuzd4niil 3 роки тому

      @@AlejandroFedorov а что посоветуете? На русском мало качественного материала. Всё качественное на английском

    • @Antares19871
      @Antares19871 3 роки тому

      @@AlejandroFedorov А как же поддержка старого кода?

  • @paveldemidov9623
    @paveldemidov9623 7 років тому +6

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  7 років тому +1

      Пожалуйста, Павел.
      Спасибо за отзыв :)

  • @eugeneneo834
    @eugeneneo834 8 років тому +71

    Спасибо! Видео просто отличное! Респект!!
    Посмеялся над фразой при создании JSP: "Мы не фрондэндчики... создаем на грани говнокода" =)))

  • @maksimgulin384
    @maksimgulin384 8 років тому +13

    спасибо автору, очень качественное видео, детально описывающие весь процесс.
    в ру Ютубе, не хватает качественного контента по Spring. Так же посмотрел ваш сайт, это просто кладец знаний :)
    Еще раз спасибо!

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому +4

      Пожалуйста, Максим :)
      Рад, что материал оказался полезным.

  • @eugene5327
    @eugene5327 7 років тому +80

    Будет хорошо, если этот комментарий окажется в топе и поможет всем остальным сэкономить время на осознании некоторых вещей
    1) Все проблемы, с которыми вы столкнулись уже разжеваны в комментариях, сразу перечитайте все а потом уже думайте над тем, что писать в комментариях.
    2) Если что-то не получается, значит вы делаете что-то не так, пересмотрите еще раз видео и пересмотрите что сделали сами. Без ошибок никуда, благодаря ошибкам получается лучше разобрать материал, я и сам подзависал во многих местах и разобрал много моментов, которые я бы реально упустил, не будь там ошибки.
    3) Насчет "особых настроек" (насчет особых настроек была шутка, но многие ее не поняли) и начальных файлов - автор использует версию IDE 2014 года, там автоматически создается шаблон приложения, в последующих версиях этого нету. Скачайте эту версию и все, проблемы не будет.
    Но эти шаблоны не так сильно и нужны, т.к. по сути мы все создаем сами, проделать это все можно на любой версии, главное понимать как собирается проект через Maven.
    4) Насчет подключения базы данных - там у многих проблема с подключением к базе, проверьте, установлен ли у вас сервер MySQL, а лучше найдите инструкцию полной установки переустановите заново и просмотрите чтобы был запущен сервер в Workbench. Если ошибка до сих пор есть с подключением, то посмотрите создали ли базу данных с таблицами в правильном месте и правильно ли настроили подключение в коде.
    И самое главное:
    Эти два видео у автора (web-приложения) - единственные видео в русском сегменте где замечательно все объясняется. Поймете это ближе к концу видео.
    Евгений, благодарю за видеоуроки и за хорошую подборку материала на сайте, они очень помогли!

    • @КедельМихаил
      @КедельМихаил 6 років тому

      Вот ссылка на полный пакет со всем нужным для MySQL разработки dev.mysql.com/downloads/windows/installer/5.7.html

    • @kosbarable
      @kosbarable 6 років тому +6

      за 2 года всё так поменялось... и IDE и Workbench, что теперь остаётся только: "всё хуйня, давай по новой" что называется)

    • @АлексейЯ-б5л
      @АлексейЯ-б5л 5 років тому

      @@kosbarable да не, норм - принципы-то те же..

    • @stas4985
      @stas4985 5 років тому

      на самом деле хайбер сам создаст таблицу

  • @zedsdeadbaby384
    @zedsdeadbaby384 8 років тому +19

    Самый классный видос по практике spring mvc на русском!

  • @ДенисНикифоров-о5и
    @ДенисНикифоров-о5и 6 років тому +3

    Спасибо огромное за вклад в наше обучение, это именно то, что я искал

  • @lexjust
    @lexjust 8 років тому +2

    Огромное спасибо за видео. Очень помогает в изучении Spring'a. Ждём подобных уроков!

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому +2

      Пожалуйста. Алекей.
      Работаю )

  • @heroy01
    @heroy01 Рік тому +1

    Божечки-кошечки, всё понятно

  • @Терентий-ю4ъ
    @Терентий-ю4ъ 3 роки тому

    Отличное видео, с первого раза сложно для новичка, но со второй попытки разберусь! Благодарю за знания, Евгений!

  • @Maratreason
    @Maratreason 8 років тому +1

    Спасибо огромное. Классный урок. На этой основе буду делать себе портфолио, только вместо книг будут люди, сотрудники какой-то компании, с фото и описанием.

    • @ВиталийГудзь-г4ъ
      @ВиталийГудзь-г4ъ 4 роки тому

      Здравствуйте. Как ваши успехи? Имело ли значение портфолио?

  • @sergdefault
    @sergdefault 8 років тому

    Отличное видео, давно искал нечто подобное. Перечитал материалы на вашем сайте про Spring и Hibernate и многое стало понятно. Ваш ресурс мне ооочень понравился.

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      +Сергей Цымбалюк
      Спасибо за отзыв. )
      Рад, что Вам это пригодилось.

  • @AndreyDelay
    @AndreyDelay 3 роки тому

    Большое огромное за урок, уже 3 раза посмотрел!!)) Огонь!

  • @MrPushcart
    @MrPushcart 6 років тому

    Супер. Приятно смотреть как работает профессионал

  • @TheKunnilinux
    @TheKunnilinux 6 років тому +2

    6:05 лучше Integer
    11:30 this не нужен
    13:34 если книга не найдена, в логи пойдет "книга успешно удалена, детали: null" (нужно добавить блок else). Также дубляж кода: для поиска книги уже есть метод с таким же кодом, можно его переиспользовать
    14:44 если книга не найдена, в логи также как и выше пойдет, что книга найдена, детали null (нужно также добавить if-else)

    • @Krainiiserver
      @Krainiiserver 6 років тому +4

      мне ещё показалось странно, как называются поля. Если у тебя класс книга, то и поле должно быть просто "автор", а не "автор книги". Ну или идти уже тогда до конца "bookPrice", "bookId". А то получается половина полей имеет приставку "book", половина - нет.

  • @MrAivan87
    @MrAivan87 8 років тому +3

    Пожалуй единственный !!!! достойный урок по данному стеку технологий для новичков. Очень было полезно изучить. Сайт очень понравился. Так держать .Спасибо!!!

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому +1

      Пожалуйста )
      Спасибо за отзыв.

  • @maxmaroff260
    @maxmaroff260 4 роки тому

    Спасибо огромное!!! Очень полезное видео! Всех благ Вам!!!!

  • @ВладиславАбросимов-ф5е

    Топ видео) и посмеяться и полезного уяснить)) А на счет того что заходят люди - полные новички в этом, так вам не сюда уважаемые. Желание быстренько за 40 минут овладеть технологией это не про программирование)

  • @ascar66
    @ascar66 4 роки тому +1

    Для тех кто хочет повторить за автором, проект нужно создавать через maven, просто создаете webapp приложение, а потом добавляете все зависимости в ваш pom.xml файл. И все у вас заработает.

  • @wetergshsghsfghsfh
    @wetergshsghsfghsfh 4 роки тому +1

    Сделал тоже самое (git -> github.com/fatumepta/spring-mvc-hibernate-thymeleaf), но
    + full java config;
    + настройки для JDBC, ConnectionPool и Hibernate в отдельном файле;
    + Thymeleaf вместо jsp;
    + Postgres 12;
    - без логирования.
    Для запуска проекта потребуется Postgres 9+ с бд "spring_mvc_crud". Но это не обязательно, в настройках можно поменять диалект СУБД и имя для БД соответственно.

  • @DentonA1988
    @DentonA1988 8 років тому +4

    Спасибо за хорошее видео. Делал пошагово но на свою БД со своими полями.
    Столкнулся в какой-то момент с org.hibernate.LazyInitializationException: could not initialize proxy - no Session. Запускаю ваш проект из раздачи - все работает.
    После тщательной инспекции своего кода, выяснилось, что проблема была в отсутствующей строке логгера
    logger.info("User successfully loaded. User info: " + user); в UserDaoImpl.
    Проблему с пассивной инициализацией решил добавлением строки в hibernateProperties:
    true

    • @Roman.Solianik
      @Roman.Solianik 5 років тому

      очень долго долбался с этой проблемой, просто посмотрите что гугл дает на "disable lazy loading hibernate" там просто треш.

  • @rejaser
    @rejaser 7 років тому

    все очень круто, мне понравилось. Буду ждать видео о фреймворках с подробными объяснениями. Было бы более подробное видео с пояснениями было бы прям ВААААААХ!!!

  • @rasZam
    @rasZam 2 роки тому

    Круто, даже как то непривычно читать xml объявления бинов)

  • @АндрейСухарев-е3я
    @АндрейСухарев-е3я 4 роки тому

    Капитальный Красаучег!

  • @antonalekseev2694
    @antonalekseev2694 6 років тому +1

    Если у Вас поздняя версия MySQL (например 8.0.11), то решение проблемы с /*HTTP Status 500 - Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Could not open connection*/ может заключаться в одной строке mvc-dispatcher-servlet.xml: "jdbc:mysql://localhost:3306/bookmanager?serverTimezone=UTC".
    PS: не забудьте в pom.xml поменять версию mysql-connector-java (на 8.0.11, например).

    • @aleksandrt7158
      @aleksandrt7158 6 років тому

      А мне это не помогло...

    • @vladkaverim1736
      @vladkaverim1736 5 років тому

      этот совет мне постоянно помогает при разборе чужих старых проектов

    • @MsDima9999
      @MsDima9999 5 років тому

      @@aleksandrt7158 решилась проблема?
      У меня тоже самое,хотя пароль поменял,тайм зону добавил,букву s тоже и все-ровно 500

  • @MrMaksimsergeevich
    @MrMaksimsergeevich 6 років тому

    Это просто космос! Во всём инете не нашёл ничего подобного! В закладки! Упаси бог потерять!

    • @romanfedchenko7223
      @romanfedchenko7223 6 років тому

      Да, и как космос абсолютно загадочный, скрытый и непонятный. Без объяснений это видео не стоит ничего. К сожалению. ((

  • @oxx5441
    @oxx5441 4 роки тому

    Огромнейшее спасибо!

  • @freegy4018
    @freegy4018 3 роки тому

    Изучил java se и java core. Начинаю вникать в область сетевой разработки на java, spring. С чего начать изучение? Как этот процесс обучения должен выглядить.Чтобы также получать навыки написания подобных приложений и совершенствоваться в этом. Какие книги может быть посоветуете? Заранее спасибо

  • @Samentg
    @Samentg 4 роки тому

    Kрутой урок. Хотелось бы еще с использованием анотаций. Без xml

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 роки тому +1

      Есть более новые видео по этой теме. ua-cam.com/video/e7swABdqOS4/v-deo.html&ab_channel=EugeneSuleimanov
      Попробуйте просмотреть более новые в этом плейлисте, пожалуйста.

  • @desire88
    @desire88 6 років тому

    Для того что бы убрать лишние проверки и повысить быстродействие Hibernate, рекомендуется на методах которые по своей логике должны только получить данные, ставить не просто @Transactional, а указывать дополнительный параметр readOnly, а именно @Transactional(readOnly = true). К таким методам можно отнести getBookById в BookServiceImpl.
    Всем добра :)

  • @NovasES
    @NovasES 6 років тому +1

    Все работает отлично. Если у кого проблемы с кодировкой в MySQL добавьте в web.xml код:
    charsetFilter
    org.springframework.web.filter.CharacterEncodingFilter
    encoding
    UTF-8

    forceEncoding
    true


    charsetFilter
    /*

    • @chavgun97
      @chavgun97 6 років тому +1

      Дай бог тебе здоровья, добрый человек!!! 4 часа пытался исправить проблему, весь интернет перелопатил.

    • @shaihulud2856
      @shaihulud2856 6 років тому

      Спасибо, помогло

  • @TheEBPO
    @TheEBPO 8 років тому +1

    Спасибо! Ценный урок. А если бы было с объяснениями - цены бы небыло..

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      +Как? How?
      А какие именно объяснения хотелось бы увидеть в будущих видео?

    • @TheEBPO
      @TheEBPO 8 років тому +1

      Не могу сказать что вы плохо объясняете потому как получается у Вас это хорошо, не знаю на какой уровень знаний рассчитано видео, но если сказать о моем уровне (3 месяца только учу Java) мне бы хотелось допустим узнать про синтаксис команд, которые использовались при подключении hibernate, и при создании SessionFactory, как, и почему именно так. То же самое про Spring. Видео все таки именно про Spring и методы CRUD. По этому больше углубиться именно в этом направлении. Спасибо за то что учитываете пожелания.

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому +3

      +Как? How?
      В будущем планирую сделать видео туториалы по основным фреймворкам, в которых постараюсь раскрыть эти вопросы более подробно.
      Спасибо за обратную связь )

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому +5

      +Как? How?
      А пока, попробуйте прочитать этот материал:
      proselyte.net/tutorials/hibernate-tutorial/
      proselyte.net/tutorials/spring-tutorial-full-version/
      Для начального уровня должно хватить.

  • @andriykachur2657
    @andriykachur2657 4 роки тому +1

    Привет. Отличный урок!
    Можете подсказать почему у меня не запускается index.jps как стартовая страница при запуске?
    (Я удалил в начале index.jps и создал новый. Я думаю, что проблема в этом)

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 роки тому

      Добрый день, спасибо за отзыв Нужен лог сервера и что дает в ответе.

  • @ВалерийВалерий-з2ц
    @ВалерийВалерий-з2ц 8 років тому +7

    Скачал IDEA 16 - сколько не пытался танцевать с бубном - при выборе Spring MVC создается весьма "хилый" проект - я чего-то недонатсроил или по задумке это все нужно делать руками?

    • @lexjust
      @lexjust 7 років тому +23

      создавай проект Spring - > кликаешь Spring MVC. а потом можно добавить кликнув правок клавишей мыши на главную папку своего преокта Add Fraimwork Supported.. и выбираешь Maven.

    • @datvu3283
      @datvu3283 7 років тому +1

      Большое тебе спасибо, за то, что не поленился написать коммент!

    • @lexjust
      @lexjust 7 років тому +4

      А вообще попробуй использовать spring boot, в нем все намного проще чем тут рассказанно. Уроки можно найти на офф сайте

    • @fkyduckwarsaw691
      @fkyduckwarsaw691 7 років тому

      Спасибо!

    • @ЄгорЯрмоленко
      @ЄгорЯрмоленко 6 років тому

      благодарю!

  • @eugeneneo834
    @eugeneneo834 7 років тому

    Евгений, не могли бы вы объяснить, зачем в контроллере была применена аннотация Spring автосвязывания для метода setBookService и уточнение qualifier на "bookService" с маленькой буквы? Т.е. получается связка не с классом в пакете service, а с используемым в момент выполнения экземпляром класса? (23 мин видео). Заранее благодарю!

  • @vsb330034
    @vsb330034 8 років тому +2

    Хорошее видео. Спасибо!
    Как на счет описать бины в java, а не xml?

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      День добрый, Владимир.
      Описывать в классах - не самый лучший вариант.
      Часто - это крайне неудобно.

    • @vsb330034
      @vsb330034 8 років тому +1

      у меня опыт пока небольшой.... но сейчас преподают все через java конфиги.... но все равно спасибо за видео - очень помогло!!! :-)

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      Владимир Баранов
      Пожалуйста, Владимир :)

    • @АлександрА-т5о4л
      @АлександрА-т5о4л 2 роки тому

      @@EugeneSuleimanov и вот прошло пять лет - xml конфиги уже никто не использует))

  • @Le0n1DDeGtYaRoV
    @Le0n1DDeGtYaRoV 8 років тому +6

    Добрый день! Возник небольшой вопрос, у меня IDEA ULTIMATE и при создании проекта SpringMVC Maven не участвует, pom не создаётся. В чем может быть проблема, в настройке или ещё в чём-то? Изначально Mavena вообще не было, пришлось по копаться в настройках что бы он добавился

    • @logantmchannel
      @logantmchannel 8 років тому +5

      Лучше сразу создавать Maven проект, а потом уже добавлять ему депенденси на спринг.

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      Да, это крайне хороший вариант.

  • @alex_chugaev
    @alex_chugaev 7 років тому

    Спасибо, быстро и по делу

  • @ДмитрийПинчук-и8щ
    @ДмитрийПинчук-и8щ 7 років тому

    Очень здорово. Спасибо

    • @EugeneSuleimanov
      @EugeneSuleimanov  7 років тому +1

      Всегда пожалуйста )
      Спасибо за отзыв, Дмитрий.

  • @frozenresearch4949
    @frozenresearch4949 4 роки тому

    Вопрос. На каком это уровне разраюотки находится? (Джун, мид, сеньор)?

  • @alexkuznetsov6295
    @alexkuznetsov6295 2 роки тому

    Актуально и 2022 году. Спасибо !

  • @zanoga1
    @zanoga1 7 років тому

    супер. все просто и ясно,а с другой стороны нифига не понятно.. =))
    Почему перестали снимать видео? у Вас все супер получается, продолжайте

    • @EugeneSuleimanov
      @EugeneSuleimanov  7 років тому

      Нагрузка по работе - к сожалению, всё никак не оплучается выделить время.

  • @qfcfirf
    @qfcfirf 8 років тому

    Огромное спасибо за видео. Помогло понять как работает crud в данных условиях. Но не могли бы вы подсказать, где можно почитать про создание CRUD для 3-4 таблиц со связями Many-To-One и One-To-One. спасибо

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому +1

      Пожалуйста, Александр.
      Почитайте официальную документацию Hibernate - там всё крайне понятно и доступно написано:
      docs.jboss.org/hibernate/orm/5.1/userguide/html_single/Hibernate_User_Guide.html

  • @ВладимирБобко-ь5в
    @ВладимирБобко-ь5в 8 років тому

    Добрый день . Подскажите, можно ли совместить ваше видео по CRUD с Spring Security видео? Или нужно подключить в pom spring security?

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      День добрый, Владимир.
      Да, конечно.
      Да, поместить в pom зависимости необходимо.

    • @ВладимирБобко-ь5в
      @ВладимирБобко-ь5в 8 років тому

      спасибо огромное. Больше бы таких мастер классов. Еще раз спасибо за видео.

  • @saidmedetov981
    @saidmedetov981 Рік тому

    такой проект. можно создать только через Ultimate Idea?

  • @vadymchornyi5120
    @vadymchornyi5120 8 років тому

    Спасибо. Все ясно и понятно. Единственное не понял как в данном примере поднимается контекст Спринга, можете подсказать??

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      Пожалуйста, Вадим.
      Через аннотации, если я верно понял вопрос.

    • @vadymchornyi5120
      @vadymchornyi5120 8 років тому

      Я в этом деле только начинающий, когда сам что то делаю со спрингом то при работе с сервлетами, переопределяю метод сервлетов init(), в котором собственно и поднимаю конекст спринга так: ConfigurableApplicationContext springContext = new ClassPathXmlApplicationContext("spring/spring-app.xml", "spring/spring-db.xml");
      а вот с аннотациями пока не сильно понял.

  • @МаксимТолстобров-э9х

    Ребят, почему всегда создает приложение с пустым src ? где и какие настройки нужны чтобы структура приложения создавалась?

    • @saiman835
      @saiman835 4 роки тому +1

      в описании к видео, есть ссылка на исходный код.

  • @AndreyDeveloper
    @AndreyDeveloper 5 років тому

    Уважаемый Евгений скажи пожалуйста, а где точка входа в проект? Класс AppTest или другой? Потому как я метод main не нашёл нигде.

    • @EugeneSuleimanov
      @EugeneSuleimanov  5 років тому

      В данном видео - мы используем сервер tomcat.
      В результате сборки проекта мы получаем war файл. И томкат запускает его. Под капотом, там, конечно же, есть свой метод main, но, в данном случае, для нас это не критично.

  • @sergiytychkin
    @sergiytychkin 6 років тому

    Добрый день. Вопрос. Я добавил в свойство create. Но создание таблицы не происходит. БД есть, но таблица BOOK не создается.

  • @pamidoroff
    @pamidoroff 7 років тому

    Евгений, спасибо за видео! Есть такой вопрос: mvc-dispatcher-servlet.xml не прописан явно в pom.xml, но используется. Как JVM понимает что нужно брать именно mvc-dispatcher-servlet.xml?

    • @EugeneSuleimanov
      @EugeneSuleimanov  7 років тому

      Пожалуйста.
      Спасбои за отзыв.
      С mvc-dispatcher-servlet.xml работает Spring.
      Это название по умолчанию.
      Мы можем его изменить, но прописать это в web.xml

    • @pamidoroff
      @pamidoroff 7 років тому

      Спасибо за ответ, но в своем проекте я поменял название с mvc-dispatcher-servlet.xml на departments-servlet.xml, и не прописывал это название в web.xml, но Spring его находит все равно.

    • @EugeneSuleimanov
      @EugeneSuleimanov  7 років тому +1

      Имя меняли черtз refactor?

    • @pamidoroff
      @pamidoroff 7 років тому

      да, посмотрел файл - departments-servlet.xml

  • @goodshow935
    @goodshow935 6 років тому

    Отлично, спасибо!

  • @ИванЯковлев-о4л
    @ИванЯковлев-о4л 7 років тому

    Добрый день! Подскажите, пожалуйста, а если в базе данных несколько таблиц как нужно выстраивать DAO нужно делать интерфейсы для каждой таблицы и все имплементировать в один класс Dao или для каждого интерфейса таблицы нужен свой класс? и также с сервисом?

    • @EugeneSuleimanov
      @EugeneSuleimanov  7 років тому

      Иван Яковлев добрый вечер.
      Данные о таблице, в данном случае, берутся из аннотации.

  • @leodev9586
    @leodev9586 6 років тому +2

    Зачем GET метод делать транзакционным?

  • @annadiak3269
    @annadiak3269 3 роки тому

    Здраствуйте, у меня возникает CannotCreateTransactionException. Как исравить?

  • @firewatermoonsun
    @firewatermoonsun 3 роки тому

    13:17 Вроде как я понял load() всегда возвращает ссылку, а не null. Null возвращает get()?

    • @EugeneSuleimanov
      @EugeneSuleimanov  3 роки тому

      Да, вы правы, метод load кинет исключение, если объект не будет найден. Спасибо за комментарий.

  • @volandio
    @volandio 7 років тому

    Спасибо ОГРОМНОЕ)

  • @iakovburtsev
    @iakovburtsev 8 років тому

    Добрый день! Спасибо за очень полезное видео! Как раз, то что искал!!!
    Хотел уточнить:
    1. Intellij IDEA community или ultimate?
    2. MySQL Workbench community или ultimate?
    Если дадите ссылку буду очень рад.

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому +1

      День добрый, Яков.
      Благодарю за отзыв, рад что материал оказался полезным.
      Intellij IDEA - ultimate.
      MySQL Workbench - стандратная, которая находится в свободном доступе.
      Ссылка на Intellij IDEA находится на сайте
      www.jetbrains.com/idea/download/
      Данная IDE платная, либо бесплатная версия, с некоторыми "тонкостями".
      Workbench :
      dev.mysql.com/downloads/workbench/
      Удачи Вам, Яков.

    • @iakovburtsev
      @iakovburtsev 8 років тому

      Установил intellij IDEA community 14, чтоб было как на видео. Но вот появились проблемы с mysql workbench. Какая версия у вас стоит (номер и community/standart/enterprise)? Еще вопрос нужно создать соединение да? У меня выходит ошибка. И при открытии модели совсем отличается внешний вид. Не могу понять как у вас слева появляется навигация по проекту.

    • @iakovburtsev
      @iakovburtsev 8 років тому

      Кстати, когда скачал и запустил ваш проект (только у меня tomcat 7, это никак не влияет на работоспособность?) открывается первая страница. Затем при попытке открыть следующую по ссылке выводит ошибку. Тоже не могу понять почему.

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      Яков Бурцев
      Добрый день, Яков
      Проверьте настройки базы данных:
      1. Создана ли она у вас
      2. Такое же имя БД
      3. Имя пользователя БД
      4. Пароль доступа к БД.
      Чаще всего, проблема именно в этом.

  • @ДмитрийГончаров-о5э

    При таком способе создания проекта как в видео , не подгружается maven, т.е. не создается файл pom.xml . Хотя на видео создан pom.xml файл

  • @fedyayasha
    @fedyayasha 8 років тому +2

    Подскажите пож та где включить шаблоны, нет такого в моей ИДЕЕ, не могу найти где включить

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      Вероятнее всего, у вас Community Edition. На видео - Ultimate

    • @fedyayasha
      @fedyayasha 8 років тому +1

      у меня тоже Ultimate

  • @vitaliidmitriev7179
    @vitaliidmitriev7179 7 років тому

    Автор, спасибо за видео!
    По поводу listBooks(): ИМХО, аккуратнее получить книги было бы так:
    Session session = sessionFactory.getCurrentSession();
    CriteriaBuilder builder = session.getCriteriaBuilder();
    CriteriaQuery criteria = builder.createQuery(Book.class);
    Root contactRoot = criteria.from(Book.class);
    criteria.select(contactRoot);
    List bookList = session.createQuery(criteria).getResultList();
    Вместо того, чтобы использовать руками HQL, а также чтобы не нужно было подавлять варнинг.
    И ещё, у @Autowired значение true по дефолту, можно не писать руками.
    И вопрос: не было бы ли лучше открывать сессию отдельно для каждой операции и закрывать её? Тем более, что Session implements Closeable и можно было бы не закрывать самому, а с try-with-resources:
    try (Session session = sessionFactory.openSession()) {
    // Do a barrel roll
    }
    И последний вопрос: зачем создавать два одинаковых интерфейса и для Dao, и для сервиса, не было бы лучше создать что-то одно, типа Accessor для всех?
    Ещё раз спасибо!

    • @EugeneSuleimanov
      @EugeneSuleimanov  7 років тому +2

      Пожалуйста, Виталий.
      По поводу вашего запроса - дело в том, что (насколько я знаю) Criteria имеет преимущество в динамических запросах, которые имеют несколько параметров поиска.
      В данном случае - у нас просто список всех книг.
      По поводу сессий - а, вариантов много, но приложение крайне маленькое и вряд ли имеет смысл уделять много внимания менеджементу сессий.

  • @datvu3283
    @datvu3283 7 років тому

    Создал новый проект maven и пытался переместить в него ваш package и по итогу BookService не видит класс Book в папке model, хотя import прописан верно. В чем может быть ошибка?
    Так же при скачивании и запуске вашего проекта происходит ошибка при переходе по ссылке "BookList" Проект работает не корректно при скачивании. Maven не инсталиться:
    java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotatedElementUtils.findMergedAnnotationAttributes(Ljava/lang/reflect/AnnotatedElement;Ljava/lang/String;ZZ)

  • @stanislavstudzinskyi4597
    @stanislavstudzinskyi4597 8 років тому +1

    Видео отличное!
    Могли бы Вы подсказать, как пользователям Community Edition устанавливать необходимые библиотеки?

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      Пожалуйста, Станислав.
      К сожалению (или к счастью), у меня нет опыта работы с Community Edition и я не могу ответить на ваш вопрос.

    • @Irina-cw4lw
      @Irina-cw4lw 7 років тому

      К сожалению, никак. При работе с Java Enterprise нужна только полная версия Идеи.

  • @OriginalLany
    @OriginalLany 7 років тому

    Добрый день, подскажите, пожалуйста, как вам удалось совместить добавление и редактирование в одном окне? У меня вот на edit гиперссылка, в которой одно окно редактирования, не очень красиво получилось. Спасибо

  • @ИльяЧитнеев
    @ИльяЧитнеев 8 років тому +2

    Выбираю SpringMVC, создаю проект и в итоге проект без мавен и пом-ника, ну и соответственно без тестового класса HelloWorld.
    Зависит от версии Intellij IDEA? Или что то в настройках?

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      +Илья Читнеев
      Стоит посмотреть, отмечен ли пункт download, который находится в нижней части панели при создании проекта.
      Там есть возможность скачать библиотеки, либо указать путь.
      Рекомендуется выбирать download.

    • @ИльяЧитнеев
      @ИльяЧитнеев 8 років тому

      +Eugene Suleimanov по дефолту выбран download, на Use library не менял, потому что зачем загружать самостоятельно, если это делает maven\IDEA
      После того как нажимаю next, предлагается выбрать имя проекта и директорию , и кнопка finish

    • @ИльяЧитнеев
      @ИльяЧитнеев 8 років тому +1

      +Eugene Suleimanov я могу самостоятельно попытаться все это сделать, но IDEA должна сама по идее..

    • @ИльяЧитнеев
      @ИльяЧитнеев 8 років тому +2

      +Eugene Suleimanov отсуствует выбор шаблона

    • @rufansa
      @rufansa 8 років тому +1

      +Илья Читнеев Также не нашел выбор шаблона при создании проекта. IDEA 15 Ultimate

  • @ВладиславМелехин-е5р

    Добрые люди, залейте исходники этого проекта и дайте ссылку!

  • @kkpetkov81
    @kkpetkov81 8 років тому

    Спасибо! Проект без проблем запустился... Интересно, как можно прикрутить пейджинг, так чтоб например по 5 книг отображалось на листе, если подскажете или отправите по ссылке буду благодарен.

  • @ОлегАнонім-я4р
    @ОлегАнонім-я4р 6 років тому

    На работе заставили перейти с сервера Ґласфиш на Апаче. И здесь у меня возникает ошибка при отправляться запросов к БД вылетает ошибка 500. Соединение с бд настроено правильно. В чем может быть проблема.

  • @A1ter-Ego
    @A1ter-Ego 4 роки тому

    Еще актуально? все таки 4 года прошло

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 роки тому

      Сама идея - да. А версии я бы брал более новые.

  • @sjkrypaa5997
    @sjkrypaa5997 8 років тому +14

    добрый день, подскажите, пожалуйста, как сделать, чтобы можно было выбрать шаблон spring mvc как на 1:14
    версия идеи совпадает с вашей, однако отсутствует данное диалоговое окно

    • @fedyayasha
      @fedyayasha 8 років тому +3

      такая же проблема нет шаблона и не могу найти где включить. Помогите плиз

    • @sjkrypaa5997
      @sjkrypaa5997 8 років тому

      Sergey Yakovenko я лично так и не нашел в чем проблема

    • @АндрейРешетченко-т9й
      @АндрейРешетченко-т9й 8 років тому

      У вас видимо комъюнити эдишн, вам нужно ультимейт версию скачать

    • @sjkrypaa5997
      @sjkrypaa5997 8 років тому

      Андрей Решетченко в том-то и дело, что версия ультимат, где-то наткнулся, что убрали это фичу, на сколько соответствует реальность - не знаю

    • @АндрейРешетченко-т9й
      @АндрейРешетченко-т9й 8 років тому +5

      а, это я сам хз.
      У аффтора какие-то кастомные настройки и он не хочет объяснять как их сделать.

  • @van_za
    @van_za 7 років тому

    При попытке редактировать книгу, получаю следующее сообщение об ошибке, не подскажите где искать?
    org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/books.jsp at line 55
    52:
    53:
    54:
    55:
    56:
    57:
    58:

  • @george7064
    @george7064 8 років тому

    Здравствуйте, подскажите пожалуйста, делаю по вашему примеру, только вместо книг юзеры.
    в этом месте:
    @RequestMapping(value = "users", method = RequestMethod.GET)
    public String listUser(Model model) {
    model.addAttribute("user", new User());
    model.addAttribute("listUser",this.userService.listUser());
    return "WEB-INF/pages/users";
    }
    в listUser null, в чём может быть дело?

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      Тут необходимо смотреть код DAO слоя.
      Если HTTP приходит без ошибок, то причина, скорее всего именно там.

    • @george7064
      @george7064 8 років тому

      Спасибо за быстрый ответ, я нашёл ошибку, не верные скобки в if в jsp(((

  • @АрсенийАрсеньев-щ4й

    подскажи те как сделать index.jsp стартовой никак не могу раскурить

  • @crashoverride9681
    @crashoverride9681 8 років тому

    Одно бы хотел уточнить. Цену в int не очень делать, лучше в BigDecimal наверное?

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      Как вариант - не плохо :)

    • @AndrewGru
      @AndrewGru 8 років тому

      Немчинский советует в инте делать. В таком случае цена выражается в копейках.

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому +2

      Андрей Агарков
      Вариант хороший, но часто на реальных пректах это крайне затруднительно - много лишнего кода придётся писать.
      Поэтому используют либо Currency,
      docs.oracle.com/javase/6/docs/api/java/util/Currency.html
      или специальную библиотеку, например,Joda-Money.

    • @AndrewGru
      @AndrewGru 8 років тому

      Спасибо за информацию и за урок конечно!

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      Андрей Агарков
      Пожалуйста, Андрей.

  • @sergiytychkin
    @sergiytychkin 6 років тому

    Добрый день. Спасибо за видео. Почему-то проект не хочет запускаться на Tomcat 7. На 8 и 9 стартует без проблем. Подскажите как-нибудь можно это исправить? На хостинге установлен Tomcat 7. Поэтому и локально тестирую на 7.

    • @sergiytychkin
      @sergiytychkin 6 років тому

      Разобрался может кому-нибудь пригодится.
      Idea - Edit Configuration... - Tomcat Server - Tomcat 7.0.82 - Deployment - + BookManager:war exploded

  • @ПавелЗахаров-ш7к
    @ПавелЗахаров-ш7к 8 років тому

    Подскажите пожалуйста. При выборе типа приложения Spring MVC при нажатии далее не появляется окно с выбором типа шаблона и соответственно никакие папки не создаются, а есть только папка web. В чем может быть проблема? Использую Idea Ultimate 2016.1.1

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      +Павел Захаров
      К сожалению, не работал с крайней версией IDEA, поэтому не смогу Вам помочь в этом вопросе.
      Попробуйте поискать ответ в гугле, либо обратится в службу поддержки JetBrains.

    • @TheEBPO
      @TheEBPO 8 років тому

      У меня та же проблема. Это скорее всего прикол версии программы, или из-за того что мы его не "купили" как следует ))

    • @TheEBPO
      @TheEBPO 8 років тому

      Кстати весь урок завязан на этом шаблоне. Люди не могут повторить урок на другой версии?

    • @ПавелЗахаров-ш7к
      @ПавелЗахаров-ш7к 8 років тому

      Я разобрался, этот шаблон выбирается на версии 14 ultimate...

    • @ПавелЗахаров-ш7к
      @ПавелЗахаров-ш7к 8 років тому +1

      Eugene Suleimanov спасибо большое за урок,очень полезно.

  • @TheEBPO
    @TheEBPO 8 років тому

    Вопрос: в контроллере, в этом куске кода: listUsers не виден в JSP-м файле. Подскажите пожалуйста решение. @RequestMapping(value = "users", method = RequestMethod.GET)
    public String listUsers(Model model){
    model.addAttribute("user", new User());
    model.addAttribute("listUsers", this.daoService.listUsers());
    return "users";
    }
    ------------------------------------------------------------------------------------------------------------
    изменил на:
    @RequestMapping(value = "users", method = RequestMethod.GET)
    public String listUsers(@ModelAttribute("listUsers") List user){
    this.daoService.listUsers();
    return "users";
    }
    Теперь в файлах JSP видна ссылка на listUsers. Это правильная замена?

  • @ЮрийМинаков-щ6ы
    @ЮрийМинаков-щ6ы 8 років тому

    Здравствуйте! Огромное Вам спасибо за видео! Может быть вы подскажете, пытался по аналогии сделать для своей базы приложение, при запуске сервера выскакивает следующая ошибка:
    HTTP Status 500 - Request processing failed; nested exception is
    org.springframework.transaction.CannotCreateTransactionException: Could
    not open Hibernate Session for transaction; nested exception is
    java.lang.NoClassDefFoundError:
    org/hibernate/engine/transaction/spi/TransactionContext
    Что может быть не так?

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому +1

      День добрый, Юрий.
      Проверьте версию Hibernate, в данном проекте используется версия 4.3.5 Final.
      Вероятнее всего, в Вашем случае - Hibernate 5.

    • @ЮрийМинаков-щ6ы
      @ЮрийМинаков-щ6ы 8 років тому

      Действительно, в этом всё дело, помогло)
      Спасибо большое!

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      Всегда пожалуйста, Юрий.

    • @АнтонГорбатенко-у2ь
      @АнтонГорбатенко-у2ь 4 роки тому

      @@EugeneSuleimanov У меня таже проблема. Немогли бы вы обьяснить почему не работает с 5 Hibernate?

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 роки тому

      @@АнтонГорбатенко-у2ь это связано с конфликтом версий. Версии спринга и хибернейта.

  • @awesomevideo9700
    @awesomevideo9700 7 років тому

    Евгений, спасибо Вам за туториал.
    Сделал все по аналогии, проект заработал.
    Разве что пришлось использовать в pom.xml те же версии зависимостей, что в Вашем примере. Свежие версии Спринга и Хибернейта не переваривали друг друга.
    У меня к Вам есть дополнительный вопрос. Буду очень признателен, если ответите.
    Я хочу прикрутить простой поиск по айдишнику или полю с названием книги.
    Что для этого необходимо сделать? Я так понимаю, в контроллер надо добавить соответствующий метод наподобие этого.
    @RequestMapping("search/{id}")
    public String searchUser(@PathVariable("id") int id, Model model){
    //не уверен что именно эти методы нужно использовать
    model.addAttribute("user", this.userService.getUserById(id));
    model.addAttribute("listUsers", this.userService.listUsers());
    return "users";
    }
    По идее, после этого мы должны добавить в .jsp страницу с книгами кнопку search
    при клике на которую нас перебрасывает к полям таблицы, которую мы используем для добавления и редактирования книг, а там в свою очередь ввести айдишник и если совпадение найдено, то в этой же нижней таблице появятся данные по книге.
    Логика в целом ясна, но как реализовать не совсем понятно, опыта не хватает.
    Подскажите, как бы Вы это реализовали

    • @EugeneSuleimanov
      @EugeneSuleimanov  7 років тому

      Вечер добрый.
      Поиск по ID - Не самый лучший враиант - лучше использовать поиск по имени или по цене и т.д.
      Необходимо реализовать метод в DAO слое + добавить во все слои.
      Ну и создать отдельную страницу для вывода результатов поиска.

    • @awesomevideo9700
      @awesomevideo9700 7 років тому +1

      Спасибо за наводку. В ДАО добавил метод поиска пользователей по имени:
      @Override
      @SuppressWarnings("unchecked")
      public List listUsersByQuery(String query) {
      Session session = this.sessionFactory.getCurrentSession();
      List bookList = session.createQuery("from Books B WHERE B.book_title = '" + query + "'").list();
      return bookList;
      }
      В контроллер добавил такую реализацию:
      @RequestMapping(value = "/books/search" , method = RequestMethod.GET)
      public String searchClubs(@RequestParam("book_title") String title, Model model) {
      model.addAttribute("queryTitle", bookService.listBooksByQuery(title));
      return "books";
      }
      Евгений, подскажите, правильно ли реализован метод в контроллере? И под созданием отдельной страницы для вывода результатов поиск Вы понимаете отдельную .jsp или ссылку внутри books, например "/books/search?

  • @cardmastercard3554
    @cardmastercard3554 8 років тому

    Евгений, подскажите пожалуйста, как осуществить поиск по БД в Вашем примере?

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      +Cardmaster Card
      Тут нужно думать, конечно, самому.
      Дам лишь подсказу, что нужно реализовать метод, который делает запрос в базу с определённым условием.
      Создать отдельную страницу с выводом результатов и контроллер для этой странцы.
      Удачи )

    • @cardmastercard3554
      @cardmastercard3554 8 років тому

      +Eugene Suleimanov
      Вы не могли бы показать пример?

    • @online-shopklondike1806
      @online-shopklondike1806 8 років тому

      Евгений, уже несколько дней бьюсь над добавлением поиска. Можете направить в правильное русло: 1."создать отдельную страницу для вывода" в той же папке создать где и userdata? 2. контроллер для этой страницы должен быть в отдельном файле или просто путем добавления метода в UserController?

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому +2

      Создайте метод в слое dao -
      public List findBookByName(String bookName) {
      ...
      List result = new ArrayList();
      далее запрос на получение всех книг из таблицы.
      List allBooks = ...
      После этого
      for(Book book: allBooks){
      if(book.getName().equals(bookName)){
      result.add(book);
      }
      }
      ...
      return result;
      }
      Соновная мысль, приблизительно, такая.
      Пропущенная часть кода не должна вызвать затруднений.
      А страницу для вывода результатов поиска попробуйте реализовать по аналогии со списком всех книг, только используйте метод для поиска.

    • @ruslanbaimakhanov2927
      @ruslanbaimakhanov2927 8 років тому

      У меня вылетает ошибка 404 The requested resource is not available. Настраивал все по уроку, первая страница открывается, вторая ни в какую. Что делать?

  • @valeriinikitiuk5839
    @valeriinikitiuk5839 8 років тому

    ЗДРАВСТВУЙТЕ!!. Нужны cнова ваши наставления. Делаю приложение TODOList(список дел что нужно сделать). Есть необходимость выводить активные и завершенные дела отдельно. В таблице базы данных за это отвечает колонка status(тип TINYINT). Это нужно еще добавить в сontroller, dao, service по два метода?
    Я не уверен что правильно сформулировал запрос в методах в dao :
    @Override
    public List listActiveTasks() {
    Session session = this.sessionFactory.getCurrentSession();
    List rezult = session.createQuery("from Task WHERE status LIKE '1'").list();
    for(Task t:rezult){
    logger.info(" Active Task list: "+t);
    }
    return rezult;
    }
    Если не верно подскажите пожалуйста как сделать правильно..

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      Логичнее будет передавать в метод аргумент, например string или integer, а в jsp в зависимости от ввода выводить необходимые значения.

  • @dervil
    @dervil 3 роки тому

    Привет, кто мне объяснит зачем дублировать код? Я имею ввиду dao и service.

  • @firdausparadise1591
    @firdausparadise1591 4 роки тому

    ты проста гений

  • @alexboroon5605
    @alexboroon5605 8 років тому

    Евгений добрый день! Пошагово, по Вашему уроки делал приложение, однако при работе выявилась следующая проблема, при попытке редактирования добавляет новую запись в БД, все проверил несколько раз, в чем проблема не могу предположить.... Дайте пожалуйста направление куда смотреть, где искать ошибку. Заранее спасибо....

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      +Александр Селезнев
      Смотрите в BookDaoImpl. Какие именно методы используются у session.
      Плюс, посмотрите аннотации в классе Book.

  • @olenakramarenko5421
    @olenakramarenko5421 7 років тому

    Добрый день! Подскажите, пожалуйста, что сделать... При создании в BookDaoImpl переменной Logger, не хочет подключаться импорт import org.slf4j.Logger;
    import org.slf4j.LoggerFactory; на уровне slf4j. Я делала все по видео, специально скачала idea 14, так как на 16 не создавался шаблон. В pom добавила все dependency, в папке .m2 эта библиотека есть, но в проект jar файлы почему-то не подтянулись (если конечно в этом проблема). Куда и как их правильно добавлять или что нужно сделать, чтобы идти дальше? Помогите, плиз!

    • @EugeneSuleimanov
      @EugeneSuleimanov  7 років тому

      Попробуйте рпедварительно в терминале выполнить команду
      mvn clean install
      Должно помочь.

    • @olenakramarenko5421
      @olenakramarenko5421 7 років тому

      Спасибо большое, помогло!

  • @TheArsty
    @TheArsty 5 років тому

    Здравствуйте. Мучаюсь уже часа 4 с проблемой и не понимаю, что не так. Хочу в listBook поместить список книг и делаю так:
    BookServiceImpl bookService = new BookServiceImpl();
    List listBook = bookService.listBooks();
    Выдает ошибку java.lang.NullPointerException

    • @EugeneSuleimanov
      @EugeneSuleimanov  5 років тому

      Добрый вечер. Вероятнее всего - не инициализирован сам сервис. Проверьте аннотацию @Autowired в текущем классе над самим сервисом. И аннотацию @Service в классе сервисе. Почти уверен, что проблема где-то здесь.

    • @TheArsty
      @TheArsty 5 років тому

      @@EugeneSuleimanov по-прежнему ничего не получается, чувствую себя тупицей :( Само ваше приложение работает, но хотелось более детально разобраться и усвоить материал, поэтому решил добавить функционала. Появлялась эта ошибка. @Autowired действительно не было, но добавление и всякие манипуляции не помогли. Теперь просто хочу в консоль через public static void main вывести книги, но прилетает java.lang.NullPointerException Как я только не извращался :(

    • @EugeneSuleimanov
      @EugeneSuleimanov  5 років тому +1

      ​@@TheArsty непонятные моменты - это нормально. Естественно, будет NPE, думаю, имеет смысл более детально изучить что такое Spring, и как происходит инициализация компонентов. В методе main этого, просто так, в лоб, сделать не получится.
      Посмотрите здесь, этого должно хватить для основ proselyte.net/tutorials/spring-tutorial-full-version/

    • @TheArsty
      @TheArsty 5 років тому

      @@EugeneSuleimanov спасибо, уже штудирую

    • @TheArsty
      @TheArsty 5 років тому

      @@EugeneSuleimanov тестирую, получается @Autowired срабатывает только если перед классом есть аннотация @Controller или например @Component и при запуске приложения, выдает мне нужные данные. Но, если я хочу создать новый объект этого же класса и в методе получить данные из БД, то запрос в БД не делается и всегда NPE. Пока так и не понял, как используя ваш сервисный класс и не используя контроллер получить данные из БД

  • @inessapopova7956
    @inessapopova7956 7 років тому

    Подскажите , можно ли запустить данный проект из idea community? Если да, подскажите как. Пытаюсь запустить - выдаёт ссылку на ultimate((

    • @oleglogin9848
      @oleglogin9848 7 років тому

      с community не получится)

  • @abrorkhaitboboev677
    @abrorkhaitboboev677 4 роки тому

    Здравствуйте! можете подсказать какая у вас версия линукса ?

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 роки тому

      Если мне не изменяет память, то на тот момент была Ununtu 14.04 LTS

  • @taras7630
    @taras7630 6 років тому

    Надеюсь кто-то увидит. Проблема в приложении. С одной моделью работает хорошо но когда добавляю иную модель с такими же методами то получаю при edit'e "could not initialize proxy - no Session". Что не так?

    • @EugeneSuleimanov
      @EugeneSuleimanov  6 років тому

      Нужен более полный лог ошибки

    • @taras7630
      @taras7630 6 років тому

      Exception
      org.apache.jasper.JasperException: An exception occurred processing JSP page [/WEB-INF/pages/authors.jsp] at line [88]
      85:
      86:
      87:
      88:
      89:
      90:
      91:
      Stacktrace:
      org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:584)
      ...
      Root Cause
      javax.el.ELException: Error reading [name] on type [net.proselyte.bookmanager.model.Author_$$_jvst283_0]
      ...
      Root Cause
      org.hibernate.LazyInitializationException: could not initialize proxy - no Session
      ...

    • @EugeneSuleimanov
      @EugeneSuleimanov  6 років тому

      @@taras7630 т.е. вы модифицировали приложение?

    • @taras7630
      @taras7630 6 років тому

      я по аналогии создал еще одну модель с таким же функционалом как и в самом приложении. Когда была одна модель то все работало а когда две то появилась ошибка

    • @EugeneSuleimanov
      @EugeneSuleimanov  6 років тому

      @@taras7630 и некорректно настроили связи между объектами.
      Почитайте пожалуйста документацию hibernate по конфигурации связей, либо туториал на сайте proselyte.net

  • @alexandersmirnov4274
    @alexandersmirnov4274 8 років тому

    Спасибо за урок.
    Во время запуска получаю ошибкУ
    org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/pages/books.jsp at line 49
    46:
    47:
    48:
    49:
    50:
    51:
    52:
    root cause
    java.lang.NumberFormatException: For input string: "bookTitle"
    Подскажите что ей не нравится ????? Не понимаю

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      Здраствуйте, Александр.
      Хотелось бы увидеть весь трейс ошибки.
      И проверьте, полностью ли вы скопировали весь проект.
      Обратите внимание на тип данных bookTitle в классе Book - точно ли он String,

    • @alexandersmirnov4274
      @alexandersmirnov4274 8 років тому

      @Column(name = "BOOK_TITLE")
      private String bookTitle;
      stacktrace - pastebin.com/JTa8w2V1
      вот мой проект - github.com/AlexSmirnof/BookStore

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      Попробуйте в этот класс:
      github.com/AlexSmirnof/BookStore/blob/master/src/main/java/com/home/bookstore/controller/BookController.java
      Ваш метод:
      @RequestMapping(value = "books", method = RequestMethod.GET)

      public String listBooks(Model model) {

      model.addAttribute("books", bookService.listBooks());

      return "books";

      }
      Попробуйте:
      @RequestMapping(value = "books", method = RequestMethod.GET)
      public String listBooks(Model model){
      model.addAttribute("book", new Book());
      model.addAttribute("listBooks", this.bookService.listBooks());
      return "books";
      }
      Должно помочь.

    • @alexandersmirnov4274
      @alexandersmirnov4274 8 років тому

      Евгений, Большое Спасибо!
      Ваша подсказка помогла.
      Удачи Вам!

  • @Pavelnorg
    @Pavelnorg 8 років тому

    Очень помогло, почти всё почти сразу получилось, спасибо!
    Вопрос: у меня при редактировании всегда создается новая. В отладке видно, что в контроллере в addBook() все поля = null (если Long id) или 0 (если int id). Почему у меня кнопка "Add" не заполняет объект? При этом наименование передается нормально.
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      Пожалуйста, Павел.
      Внимательно просмотрите методы в слое DAO.
      Вероятнее всего, ошибка именно там.

    • @Pavelnorg
      @Pavelnorg 8 років тому

      Туда даже не доходит. В контроллере в отладке уже пустые все не-строковые поля. Может, глянете, если будет минутка? github.com/SonicNorg/JavaRushTask

  • @RevoltEnergy
    @RevoltEnergy 7 років тому

    здравствуйте, я все сделал как у Вас, но у меня работает только страница index, при переходе на остальные - 404 not found. смотрел самые первые комменты, там у кого-то было подобное, Вы советовали смотреть в контроллер, и если это о классе BookController, то там вроде-бы все правильно написано, пробовал по-разному менять во всех файлах ссылки на страницы, менял на /pages/books вместо /books, то же самое.. и не совсем понимаю при чем там этот класс контроллер, если он, насколько я понимаю, отвечает за наполнение данными jsp страниц в папке pages, а сервер не видит саму страницу вообще, или не имеет доступа к ней.. контроллер может не позволить серверу видеть страницу? поправьте, если ошибаюсь.
    и еще, перед отправкой этого комментария прямо сейчас посмотрел, в классе BookDaoImpl в строке
    List bookList = session.createQuery("from Book").list(); подчеркнуто красным " 'from' unexpected ", что-то с hibernate может, у Вас такого не было в видео же, у Вас подчеркнутым было слово Book.. помогите советом, пожалуйста

    • @EugeneSuleimanov
      @EugeneSuleimanov  7 років тому

      Добый вечер, Павел.
      Если ошибка 404 - то причина либо в контроллере, либо в именование пакетов, либо в имени jsp файла (99.9%).
      То, что подчёркивает красным - не проблема - главное, чтобы компиляция была успешной.
      Нужно смотреть сам код.

  • @АлександрБондарев-ъ7ф

    Классный урок. Респект за проделанную работу. но почему-то не может у меня совершить транзакции для вывода списка книг. Хотя информацию об одной книге выводит.

    • @EugeneSuleimanov
      @EugeneSuleimanov  7 років тому

      Здраствуйте, Александр.
      Спасибо за отзыв
      Какие ошибки вылетают?

    • @АлександрБондарев-ъ7ф
      @АлександрБондарев-ъ7ф 7 років тому

      Request processing failed; nested exception is org.hibernate.hql.internal.ast.QuerySyntaxException: books is not mapped [from books]

  • @alexkurgan2008
    @alexkurgan2008 7 років тому

    Добрый день,у меня такой вопрос,а как сделать все тоже самое только без Спринга?

    • @EugeneSuleimanov
      @EugeneSuleimanov  7 років тому

      день добрый.
      С помощью сервлетов. Мы создаём обработчики запросов и прописываем поведение

  • @yauhenizakhno8510
    @yauhenizakhno8510 5 років тому +2

    Нифига не получается так проект создать( с версии 15 уже по другому

  • @victormog
    @victormog 7 років тому +1

    Пара вопросов:
    1) Зачем два одинаковых интерфейса (BookDao и BookService)?
    2) В чем *практическая* необходимость в этих интерфейсах?

    • @EugeneSuleimanov
      @EugeneSuleimanov  7 років тому

      Разбиение на слои - Repository и Service.
      Обычно, первый отвечает только за работу с БД, а второй - содержит бизнес логику.
      В данном приложении это не критично, потому что есть только стандартные CRUD операции.

    • @victormog
      @victormog 7 років тому +1

      Вы не поняли мой вопрос (может быть он конечно настолько тупой :)
      За работу с БД и бизнес-логику отвечают классы BookDaoImpl и BookServiceImpl, а мне не понятно зачем писать *интерфейсы?* И можно же было имплементировать один и тот же интерфейс в оба этих класса - они же (интерфейсы) *одинаковые!*

    • @EugeneSuleimanov
      @EugeneSuleimanov  7 років тому

      В данном случае - они одинаковые и смысла нет.
      В реальной жизни, вероятнее всего, каждый интерфейс будет иметь свои методы.

    • @victormog
      @victormog 7 років тому +1

      Спасибо!

    • @TheKunnilinux
      @TheKunnilinux 6 років тому +2

      1) это они пока что одинаковые, потому что основные функции программы совпадают с перечнем, зашифованном в абревиатуру CRUD. Если мы решим добавить в программу, к примеру, функции сортировки или еще другие фичи, сервис неизбежно дополнится новыми методами, а вот репозиторий новых методов не получит
      2) так реализуется паттерн "слабая связанность" - максимальная независимость компонентов системы друг от друга

  • @valeriinikitiuk5839
    @valeriinikitiuk5839 8 років тому +1

    Нужна помощь!! В модели есть поле (Date date) дата, я хочу вставить его в таблицу базы данных. Как это все настроить? Каким должен бить тип поля в базе данных, какой должен бить html input jsp-файле, может нужны какие-то аннотации в модели к этому полю? Просветлите пожалуйста. Не могу найти нормальный материал по этой теме.

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      Тип данных в БД может быть DATE либо DATETIME.
      Вводить данные нужно в соотвествии с шаблоном даты в БД.

    • @valeriinikitiuk5839
      @valeriinikitiuk5839 8 років тому

      поставил тип DATETIME, Данные ввожу вот так:


      Часть кода модели:
      @Column(name = "date")
      @DateTimeFormat(pattern = "dd MMMM yy hh:mm:ss")
      @Temporal(TemporalType.DATE)
      private Date date;
      public Date getDate() {
      return date;
      }
      public void setDate(Date date) {
      this.date = date;
      }
      Подскажите что не так.

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      В любом случае необходимо смотреть само приложение целиком.
      Но обычно, дату вводят с помощью календарика, а не в поле.

    • @valeriinikitiuk5839
      @valeriinikitiuk5839 8 років тому

      Ccылка на код -->>> drive.google.com/file/d/0BwNON3n3eRd6ZUJLWWliT1RlNk0/view?usp=sharing

    • @valeriinikitiuk5839
      @valeriinikitiuk5839 8 років тому

      База данных test (root root) таблица в ней tasklist:
      CREATE TABLE `tasklist` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `description` longtext NOT NULL,
      `status` tinyint(1) NOT NULL,
      `date` datetime NOT NULL,
      PRIMARY KEY (`id`)
      ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

  • @LeoChaR.g
    @LeoChaR.g 7 років тому

    Доброго времени суток Евгений! Не могу разобраться с проблеммой. При запуске(также пробовал запускать и Ваш готовый проект) выдаёт следующие ошибки:
    1.Artifact BookManger:war exploded: Error during artifact deployment. See server log for details.
    2. Error waiting for multi-thread deployment of context descriptors to complete
    java
    Посоветуйте как лечить пож. Заранее благодарен

    • @EugeneSuleimanov
      @EugeneSuleimanov  7 років тому

      Добрый день, Олег.
      1. Проверьте версии зависимостей - может быть конфликт версий.
      2. Нужен более полный стектрейс для понимания проблемы.

  • @oleglogin9848
    @oleglogin9848 7 років тому

    а можно вместо sessionfactoruy использовать entitymanagerfactory. и какая у них разница?

    • @EugeneSuleimanov
      @EugeneSuleimanov  7 років тому +1

      Здраствуйте, Олег.
      EntityManagerFactory (и EntityManager) - это JPA стандарт.
      SessionFactory относится исключительно к Hibernate.
      Обычно, если нам не нужно использовать специфические возможности SessionFactory, то лучше использовать EntityManager.
      В любом случае, из EntityManager мы также можем получить сессию, например:
      Session session = entityManager.unwrap(Session.class);
      Надеюсь, ответил на ваш вопрос

    • @oleglogin9848
      @oleglogin9848 7 років тому

      извините за наверное тупой вопрос.
      public void addBook(Book book) {
      Session session = entityManager.unwrap(Session.class);
      session.persist(book)
      }
      Я правильно использую вызов сессии из EntityMeneger_a ?.спасибо.

    • @EugeneSuleimanov
      @EugeneSuleimanov  7 років тому

      oleg login не бывает глупых вопросов в нашей работе - всегда лучше уточнить )
      В данном случае лучше использовать методы EntityManager для сохранения.
      Метод unwrap здесь не нужен.
      Ну и конфигурация будет несколько отличаться в конфигурационном файле.

  • @DmitryBaskakov
    @DmitryBaskakov 7 років тому

    Добрый день , что делать если Idea не предлагает создать шаблон при создании Spring MVC ?

    • @EugeneSuleimanov
      @EugeneSuleimanov  7 років тому

      День добрый, Дмитрий.
      Попробуйте создать такую ж структуру вручную.

    • @DmitryBaskakov
      @DmitryBaskakov 7 років тому

      в исходниках нету файла, index.jsp. + 3 очепятки в коде , такое ощущение что их автор поправил за кадром :)

    • @EugeneSuleimanov
      @EugeneSuleimanov  7 років тому

      В этом и была задумка - спрятать файл index.jsp и основную работу сделать за кадром, чтобы люди ничего не могли понять.

    • @DmitryBaskakov
      @DmitryBaskakov 7 років тому

      видео классное спору нет :) , но новичкам вроде меня тяжело собирать проект даже если есть небольшие очепятки )

  • @Владимир-ъ3б9ь
    @Владимир-ъ3б9ь 8 років тому

    Добрый день. Скачал ваш проект. Запустил. Ошибка:
    HTTP Status 500 - The absolute uri: java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
    Подскажите, пожалуйста, что нужно исправить. Спасибо!

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому

      День добрый.
      Стоит проверить зависимости в файле pom.xml могли не подтянуться.

    • @Владимир-ъ3б9ь
      @Владимир-ъ3б9ь 8 років тому

      Подтянулись