
Daniel
27.04.2018
07:56:20
я все утро краем глаза это наблюдаю

Dmitri
27.04.2018
07:56:28
ReadApple() *Apple {}
ReadApples() []*Apple {}
во, товарищ Подольский подтянулся

Daniel
27.04.2018
07:56:45
и ощущения, что что-то не понятно, или что-то не получается, нет

Google

Dmitri
27.04.2018
07:56:51
он, например, знает, чем DAO от репозитория отличается

Daniel
27.04.2018
07:56:59
а есть ощущение неизбывной боли

Dmitri
27.04.2018
07:57:35

Александр
27.04.2018
07:57:53
на самом деле мне сложно переучиваться
в пыхе у нас было все в повалку

Daniel
27.04.2018
07:58:40

Александр
27.04.2018
07:58:50
$users = UserModel::find(['age'=>21])
foreach($user ...) {
$user->sex = UserModel::Male
$user->save();
}

Daniel
27.04.2018
07:59:06

Kirill
27.04.2018
07:59:57
я не знаю)
я думал дао это тупо обхект с полями и геттерами сеттерами
без логики

Dmitri
27.04.2018
08:00:39
а что, кто-то не знает?
они, например, местами очень похожи. Собственно, до взаимопроникновения. И определить, где в конкретной реализации DAO, а где уже репозиторий для меня, например, бывает сложно.

Александр
27.04.2018
08:02:52
тут конечно не для гоу - https://habr.com/post/263033/

Google

Daniel
27.04.2018
08:03:24
и это довольно мутная статья
но, вообще, граница там смутная

Александр
27.04.2018
08:03:43
ну насколько я понял
разница в том что репозиторий работает с коллекциями

Dmitri
27.04.2018
08:03:58
а что, кто-то не знает?
насколько мне представляется, репозиторий - это реализация "коллекции" поверх слоя "физических данных", а DAO - это реализация набора интерфейсов/методов для доступа к "физическим данным"

Александр
27.04.2018
08:04:01
а DAO работает с параметрами

Daniel
27.04.2018
08:04:16
репозиторий ближе к базе, dao ближе к бизнес-логике

Kirill
27.04.2018
08:04:37
для го дао походу больше заказтывает

Александр
27.04.2018
08:04:42
void delete(String userName);// DAO
void removeAccount(Account account); // Репозиторий

Kirill
27.04.2018
08:04:47
в го с коллекциями не оч хорошо

Dmitri
27.04.2018
08:04:56
и вот если этот DAO реализует интерфейс доступа, похожий на набор методов работы с коллекцией, становится малопонятно, где кто

Daniel
27.04.2018
08:05:08
угу
но и пофиг же

Dmitri
27.04.2018
08:05:42
собственно, примерно да, примерно пофиг. Тут уже больше вопрос "технического пуризма"
те же "паттерны" (в переводе - шаблоны), это набор рекомендаций/устоявшихся практик
т.е. "советы бывалых, которые на ЭТИ грабли уже наступили"

Daniel
27.04.2018
08:07:07
и смысл тут только в том, чтобы сделать одинаково по всему проекту

Dmitri
27.04.2018
08:07:11
в момент реализации совершенно не обязательно знать, под какую главу "Воспоминаний бывалых" подпадает то, что ты делаешь.

Александр
27.04.2018
08:07:30
если потом другим конечно с этим не работать...
иначе код превращается в адЪ

Google

Dmitri
27.04.2018
08:07:39
но бывает приятно сказать "да ты гонишь, никакой это не DAO, это же репозиторий"!)))
а дальше попросят обосновать...
а дальше начнутся сложности)))

Александр
27.04.2018
08:09:31
http://codehelper.ru/questions/205/new/repository-%D0%B8-dao-%D0%BE%D1%82%D0%BB%D0%B8%D1%87%D0%B8%D1%8F-%D0%BF%D1%80%D0%B5%D0%B8%D0%BC%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B0-%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BA%D0%B8
http://qaru.site/questions/7209/what-is-the-difference-between-dao-and-repository-patterns
ну пару ссылок

Mykyta
27.04.2018
08:12:18
ну насколько я понял
Гораздо проще все. Условно у тебя есть type Entity struct. При подходе Repository, у тебя будет EntityRepository, в котором будут методы Save(Entity), GetAll() []Entity,
При подходе DAO, у структуры Entity будут методы Save(), All()

Александр
27.04.2018
08:13:03
с вашего объяснения можно подумать что разница только в именовании методов :)

Dmitri
27.04.2018
08:13:51
не, он намекает на то, что DAO прикручивается к бизнес-сущности, а репозиторий - отдельная сущность сбоку

Mykyta
27.04.2018
08:14:14

Dmitri
27.04.2018
08:14:37
даже если методы будут называться одинаково, разница в том, у кого они будут

Александр
27.04.2018
08:17:04
насколько я понял у @CheshireKot объяснение ближе к репозиторию таки

Dmitri
27.04.2018
08:17:10
только я не уверен, что тов. Никитенко прям стопроцентно прав

Александр
27.04.2018
08:17:12
ну то что выше мы проговаривали
если оталкивался от рассуждений @mykytanikitenko
если конечно он не имел ввиду EntityDAO сущность, а не оригинальную модель

Dmitri
27.04.2018
08:18:54
собственно, не вижу препятствий реализации DAO в виде отдельной сущности.

Mykyta
27.04.2018
08:20:21
DTO для го не подхоодит
На дотнете, например, мы определяем класс с виртуальными полями. Даже фреймворк, например, EF, создает через рефлексию в рантайме новый объект-прокси, который наследует от оригинального класса и икапсулирует доступ ко всем этим полям, очень много магии происходит. В го такое почти нереально сделать

Dmitri
27.04.2018
08:20:25
просто применительно к Go идея прикрутить DAO к самой сущности достаточно мутная

Google

Dmitri
27.04.2018
08:21:31
собственно, я бы скорее склонялся в сторону type CRUDer interface{ Create() Read() Update() Delete() }
и рядом обертки над типом сущности
т.е. Entity отдельно, EntityDAO отдельно

Mykyta
27.04.2018
08:22:17

Dmitri
27.04.2018
08:23:22
другое дело, что EntityDAO вполне может выглядеть как
type EntityDAO struct {
Entity
}
или даже type EntityDAO Entity

Mykyta
27.04.2018
08:23:59

Dmitri
27.04.2018
08:24:12
дело в том, что система типов Go - достаточно простая, до примитивности, вещь
и многие идеи, которые отлично ложатся на логику Java и прочих "Скал", в чистом виде в Go приводят к форменному бреду

Admin
ERROR: S client not available

Mykyta
27.04.2018
08:26:16

Oknesta
27.04.2018
08:26:21
привет

Kirill
27.04.2018
08:26:33

Oknesta
27.04.2018
08:26:34
delve не могу установить в vs code
помогите
какой то жесть
mac

Morran
27.04.2018
08:27:10

Dmitri
27.04.2018
08:27:11
если мы имеем type Entity struct, определяя идею DAO как "прикрутить методы CRUD к самой сущности" мы сразу хороним сам подход для Go

Google

Oknesta
27.04.2018
08:27:27

Dmitri
27.04.2018
08:27:32

Kirill
27.04.2018
08:27:40
как он узнает в чем проблема у тебя если он ничего не знает о твоей проблеме

Oknesta
27.04.2018
08:28:28
ну вы в vc code дебажите?

Kirill
27.04.2018
08:28:45
я нет

Александр
27.04.2018
08:28:51
нет

Kirill
27.04.2018
08:28:51
я в goland
там все из коробки работает
теперь еще и dep

Александр
27.04.2018
08:29:11

Dmitri
27.04.2018
08:29:29

Oknesta
27.04.2018
08:29:39
так я тоже хочу)
тока там триал версия
=((
ща качну

Dmitri
27.04.2018
08:29:54

Oknesta
27.04.2018
08:30:00
уже качаю

Александр
27.04.2018
08:30:27

Kirill
27.04.2018
08:30:37

Oknesta
27.04.2018
08:30:40
пока мне он денег не приносит не могу платить(
вот xcode фри я бы за него платил по месячно

Dmitri
27.04.2018
08:31:01