tag:blogger.com,1999:blog-7407396207758383724.post8899253932475868621..comments2022-11-21T05:23:30.129+03:00Comments on Заметки программистера: Java. Реализация шаблона DAO. ПродолжениеVladimir Popovhttp://www.blogger.com/profile/10396640252599430444noreply@blogger.comBlogger15125tag:blogger.com,1999:blog-7407396207758383724.post-26819422655158348522015-10-27T19:26:39.105+03:002015-10-27T19:26:39.105+03:00Скажем так, если бы мне надо было сформировать _то...Скажем так, если бы мне надо было сформировать _только_ список имен студентов и их идентификаторов, целиком описание студентов из базы я бы не доставал и выполнял запрос только нужных мне полей. Возвращать массив идея спорная - просто, быстро, эффективно, но трудно поддерживать. Я бы завел отдельный объект с двумя полями.<br /><br />Что до адаптера - с java 8 предпочтительнее делать фильтр коллекции с помощью stream api. Нагляднее на мой взгляд.Vladimir Popovhttps://www.blogger.com/profile/10396640252599430444noreply@blogger.comtag:blogger.com,1999:blog-7407396207758383724.post-72133498839940486602015-10-27T19:15:12.832+03:002015-10-27T19:15:12.832+03:00Мне интересен вопрос именно трансформации. Я сейча...Мне интересен вопрос именно трансформации. Я сейчас создаю специальный объект-адаптер, который возвращает нужный мне массив на основе коллекции. Это мой подход не знаю на сколько это типично. Как делаете вы, интересно ваше мнение?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-7407396207758383724.post-51700254654568442612015-10-27T10:13:04.817+03:002015-10-27T10:13:04.817+03:00Если вы коллекцию уже получили, то лучше ее трансф...Если вы коллекцию уже получили, то лучше ее трансформировать. Если вам нужны только два поля, ради них вытаскивать сущности целиком смысла нет. На сколько я понимаю, ситуации, когда нужны только часть полей объектов достаточно часто встречаются и каждый ORM с ними борется по своему, но суть всех решений сводится к одному: вытаскивать из базы минимум информацииVladimir Popovhttps://www.blogger.com/profile/10396640252599430444noreply@blogger.comtag:blogger.com,1999:blog-7407396207758383724.post-19972473537989911072015-10-26T12:20:40.815+03:002015-10-26T12:20:40.815+03:00Здравствуйте
Всегда интересовал вопрос представлен...Здравствуйте<br />Всегда интересовал вопрос представления данных, после того как мы получим их через DAO. Например, мы получили коллекцию объектов Student, из этой коллекции мне нужен массив вида id -> name, чтобы создать на форме выпадающий список(select). Можно делать это по разному, получать сразу из DAO готовый массив, либо каким-то образом преобразовывать уже снаружи нашу коллекцию. Что-то посоветуете?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-7407396207758383724.post-58778784551589817992015-05-22T16:27:53.885+03:002015-05-22T16:27:53.885+03:00по поводу двух студентов: сейчас уже не помню дета...по поводу двух студентов: сейчас уже не помню деталей, но если это действительно так, как Вы говорите, то это ошибка. По поводу many to many - это далеко не простая задача. Лучше много раз подумать, прежде чем пытаться ее унифицированно решать и взять готовое ORM решение :) Как справедливо заметили в первом комментарии к статье, предложенное решение имеет существенные недостатки, и имеет скорее фановый характер.Vladimir Popovhttps://www.blogger.com/profile/10396640252599430444noreply@blogger.comtag:blogger.com,1999:blog-7407396207758383724.post-69633758515053001932015-05-22T12:36:32.717+03:002015-05-22T12:36:32.717+03:00или может статьей поделитесь с объяснениями, если ...или может статьей поделитесь с объяснениями, если встречали.Anonymoushttps://www.blogger.com/profile/16343831597017106180noreply@blogger.comtag:blogger.com,1999:blog-7407396207758383724.post-20250691249559790992015-05-22T12:33:25.184+03:002015-05-22T12:33:25.184+03:00и подскажите пожалуйста как примерно делать, если ...и подскажите пожалуйста как примерно делать, если у нас зависимость many to many ?Anonymoushttps://www.blogger.com/profile/16343831597017106180noreply@blogger.comtag:blogger.com,1999:blog-7407396207758383724.post-75339678340477232732015-05-22T12:31:05.014+03:002015-05-22T12:31:05.014+03:00Спасибо, помогло. Еще один вопросик: правильно ли ...Спасибо, помогло. Еще один вопросик: правильно ли я понимаю, что при добавлении 2х студентов в одну группу, у вас в бд создается 2 строки одной и той ж группы(number, department), но с разными id? Anonymoushttps://www.blogger.com/profile/16343831597017106180noreply@blogger.comtag:blogger.com,1999:blog-7407396207758383724.post-7707480381259575712015-05-22T12:30:37.242+03:002015-05-22T12:30:37.242+03:00Этот комментарий был удален автором.Anonymoushttps://www.blogger.com/profile/16343831597017106180noreply@blogger.comtag:blogger.com,1999:blog-7407396207758383724.post-81330401594925726052015-05-22T12:30:05.173+03:002015-05-22T12:30:05.173+03:00Этот комментарий был удален автором.Anonymoushttps://www.blogger.com/profile/16343831597017106180noreply@blogger.comtag:blogger.com,1999:blog-7407396207758383724.post-44932691725620760282015-05-21T19:15:15.619+03:002015-05-21T19:15:15.619+03:00Вы создаете dao для группы, а затем пытаетесь с ег...Вы создаете dao для группы, а затем пытаетесь с его помощью сохранить студента. Студенты должны сохраняться с помощью соответствующего дао.Vladimir Popovhttps://www.blogger.com/profile/10396640252599430444noreply@blogger.comtag:blogger.com,1999:blog-7407396207758383724.post-65295474425251587462015-05-21T15:06:53.992+03:002015-05-21T15:06:53.992+03:00Добрый день, подскажите пожалуйста почемы вылетают...Добрый день, подскажите пожалуйста почемы вылетают ошибки в вашем коде при добавлении студента? main -> http://pastebin.com/index/VxWc2Jda<br /><br />лог:<br />ru.dokwork.daotalk.dao.PersistException: java.lang.ClassCastException: ru.dokwork.daotalk.domain.Student cannot be cast to ru.dokwork.daotalk.domain.Group<br /> at ru.dokwork.daotalk.dao.AbstractJDBCDao.persist(AbstractJDBCDao.java:122)<br /> at ru.dokwork.daotalk.mysql.MySqlDaoFactory.main(MySqlDaoFactory.java:85)<br /> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br /> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br /> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br /> at java.lang.reflect.Method.invoke(Method.java:606)<br /> at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)<br />Caused by: java.lang.ClassCastException: ru.dokwork.daotalk.domain.Student cannot be cast to ru.dokwork.daotalk.domain.Group<br /> at ru.dokwork.daotalk.mysql.MySqlGroupDao.prepareStatementForInsert(MySqlGroupDao.java:14)<br /> at ru.dokwork.daotalk.dao.AbstractJDBCDao.persist(AbstractJDBCDao.java:116)<br /> ... 6 moreAnonymoushttps://www.blogger.com/profile/16343831597017106180noreply@blogger.comtag:blogger.com,1999:blog-7407396207758383724.post-22122203002637132242014-06-08T09:59:39.961+04:002014-06-08T09:59:39.961+04:00Также в этом же методе наблюдается косвенная рекур...Также в этом же методе наблюдается косвенная рекурсия через метод T getByPK(Integer key). Допустим, в БД имеется "центральная" таблица, которая напрямую или косвенно связана со всеми таблицами БД, то вызов метода parseResultSet создаст все объекты сущностей БД, объем же БД чаще всего не ограничен.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-7407396207758383724.post-63988576897415559132014-06-04T09:32:06.200+04:002014-06-04T09:32:06.200+04:00Боюсь вы правы. Но этих издержек можно избежать, к...Боюсь вы правы. Но этих издержек можно избежать, кешируя объекты в фабрике и в методе getDependence пытаться получить объекты вначале из кеша. Правда это приводит к нетривиальной задаче поддержания кеша в актуальном состоянии.Vladimir Popovhttps://www.blogger.com/profile/10396640252599430444noreply@blogger.comtag:blogger.com,1999:blog-7407396207758383724.post-74132533201476312872014-06-03T20:15:22.282+04:002014-06-03T20:15:22.282+04:00В методе parseResultSet(ResultSet rs) любого dao к...В методе parseResultSet(ResultSet rs) любого dao класса с зависимостями, на разбор одного ResultSet, например на 1000 строк, будет сделано как минимум 1000 запросов к БД.Anonymousnoreply@blogger.com