@jvmchat

Страница 1207 из 2890
Митко Соловец?
21.02.2017
18:49:40
Меняешь значение в базе
у меня отображение таблицы на объект, объект привязан к контексту

Wystan
21.02.2017
18:49:52
ауууу, фп боги, вы где
я вообще из базы только читаю и трансфомирую. cqrs все дела

Митко Соловец?
21.02.2017
18:50:34
намного же проще, поднять объект из бд, который привязан к контексту, сеттером поменять филд и при выходе из метода транзакция закоммитит изменения

Alexander
21.02.2017
18:50:34
я вообще из базы только читаю и трансфомирую. cqrs все дела
А как в базу попадают данные, которые ты читаешь?

Google
Митко Соловец?
21.02.2017
18:50:39
нахера тут иммутабельность?

Митко Соловец?
21.02.2017
18:52:05
при подходе который продвигает hibernate - да
я бы сказал такой подход продвигает JPA

Nikolay
21.02.2017
18:52:10
да

Митко Соловец?
21.02.2017
18:52:33
и вообще любая ORM

Nikolay
21.02.2017
18:52:41
но я боюсь что hibernate и JPA попадает в категорию паттернов "не очень"

Ivan
21.02.2017
18:52:48
тут же @dmsol сказал, что логика в них это боль, то есть логики там не должно быть. выходит, что они должны просто сеттить/возвращать значение, тогда о каком контроле идет речь? ты через геттер вернешь все то же самое значение поля, только кода будет намного больше
это дань традиции, когда процедурщики начали массово мигрировать в Java сложился такой подход, сейчас есть тенденция уходить от этого и как минимум оставлять только геттеры(ну по крайней мере у меня)

т.е. делать объекты иммутабельными

Митко Соловец?
21.02.2017
18:53:17
но я боюсь что hibernate и JPA попадает в категорию паттернов "не очень"
давай кейс с иммутабельным объектом и крудом в базе

Kirill
21.02.2017
18:53:38
это дань традиции, когда процедурщики начали массово мигрировать в Java сложился такой подход, сейчас есть тенденция уходить от этого и как минимум оставлять только геттеры(ну по крайней мере у меня)
Снова вопрос - зачем, если логики там не должно быть, а поле ты все равно и так возвращаешь?Если ты не хочешь вообще его никак наружу выставлять - делаешь приватным и всё. Зачем лишний геттер?

sss3 ?
21.02.2017
18:54:18
Логировать использование

Google
sss3 ?
21.02.2017
18:54:31
Поставить бряк в дебаге

Митко Соловец?
21.02.2017
18:54:35
видеть интерфейс объекта

Nikolay
21.02.2017
18:54:52
давай кейс с иммутабельным объектом и крудом в базе
update отдельного поля, когда ты имеешь маппинг из объектов в бд - как делается в jdbc обертках на scala

Ivan
21.02.2017
18:54:52
Снова вопрос - зачем, если логики там не должно быть, а поле ты все равно и так возвращаешь?Если ты не хочешь вообще его никак наружу выставлять - делаешь приватным и всё. Зачем лишний геттер?
еще раз, во первых дань традиции, а во вторых хоть какой то контроль над пропертей в будущем если захочу добавить логику в геттер независимо от того хочу я делать это сейчас или нет, к тому же JSON либы всякие лучше понимают на уровне геттеров и сеттеров обычно, опять же разные аннотации по разному могут вешаться

Митко Соловец?
21.02.2017
18:54:58
Поставить бряк в дебаге
тут противоречие, если отталкиваться, что сеттеры чистые

Nikolay
21.02.2017
18:55:05
без мутабельности

sss3 ?
21.02.2017
18:55:07
Поставить бряк в дебаге
По-сути ради этого можно юзать геттеры

Alexander
21.02.2017
18:55:43
Снова вопрос - зачем, если логики там не должно быть, а поле ты все равно и так возвращаешь?Если ты не хочешь вообще его никак наружу выставлять - делаешь приватным и всё. Зачем лишний геттер?
Потому что ты хранишь себе список, а потом бац, и понимаешь, что в памяти он не помещается. Вместо списка теперь хранишь штуку, которая батчом вытаскивает данные из оффхип кэша

sss3 ?
21.02.2017
18:55:44
Хотя сам не люблю геттеры/сеттеры

Митко Соловец?
21.02.2017
18:55:46
только по скольку это голый ждбц привязку к контексту я не имею

Nikolay
21.02.2017
18:56:01
у тебя уже есть объект)

Митко Соловец?
21.02.2017
18:56:05
просто голый джава объект?

sss3 ?
21.02.2017
18:56:21
просто голый джава объект?
Что значит контекст

Дима

Nikolay
21.02.2017
18:56:30
ну, ты его как получил?

Митко Соловец?
21.02.2017
18:56:39
Что значит контекст
то, что связывает твой объект с базой

Nikolay
21.02.2017
18:56:39
запросом из базы достал?

Google
Митко Соловец?
21.02.2017
18:56:44
Nikolay
21.02.2017
18:56:50
ну вот. он у тебя есть

Митко Соловец?
21.02.2017
18:56:56
так

guga
21.02.2017
18:57:07
чего уж греха таить, в джаве народ намного более приземлённый.

sss3 ?
21.02.2017
18:57:08
А зачем тебе связывать его с базой

Ivan
21.02.2017
18:57:17
JPA же

персистентность

Митко Соловец?
21.02.2017
18:57:24
А зачем тебе связывать его с базой
допустим я использую ORM like JPA

Alexander
21.02.2017
18:57:30
то есть уже логика в геттере?
Естественно. Более того, внутренний стэйт поменялся, но всем на это срать.

Митко Соловец?
21.02.2017
18:57:34
там все объекты живут в контексте

sss3 ?
21.02.2017
18:57:35
А если не используешь

Митко Соловец?
21.02.2017
18:57:39
тогда не надо

Митко Соловец?
21.02.2017
18:57:48
и Николай мне сейчас рассказывает как будет в скале

Ivan
21.02.2017
18:57:49
Естественно. Более того, внутренний стэйт поменялся, но всем на это срать.
после такого уходят на скалу в мир иммутабельности

Kirill
21.02.2017
18:57:56
Естественно. Более того, внутренний стэйт поменялся, но всем на это срать.
Так все же говорят тут, что логика в геттере - это зло? Так правда-то где?

Митко Соловец?
21.02.2017
18:58:33
например если вы свертку сделали внутри геттера

ок

Google
sss3 ?
21.02.2017
18:58:45
Зло наверно в сеттерах логику имееть

Митко Соловец?
21.02.2017
18:58:52
но если вы начинает хуйню творить

Nikolay
21.02.2017
18:58:54
значит ты стопудово сможешь сделать копию объекта с измененным полем, и потом записать это дело в базу. копия у тебя уже есть

sss3 ?
21.02.2017
18:59:09
Когда добавил одно, а в стейт попало другое

Kirill
21.02.2017
18:59:20
тогда зачем ты у меня что-то спрашиваешь, если ты пишешь как ты хочешь, тебе норм?)) по такому подходу можно сказать, что любой самый уродливый паттерн ОК, раз я на нем пишу и мне норм)

Ivan
21.02.2017
18:59:57
даже копию объекта там сделать проблематично

Митко Соловец?
21.02.2017
19:00:15
если вы о JPA и в частности Hibernate то не все так просто
да, потому что можно вызвать переполнения кэша и локальный пзцд

Admin
ERROR: S client not available

Kirill
21.02.2017
19:00:19
ты по такому подходу постами выше на джаву пописал, но ничего
я не понял смысла того, что ты сказал, поясни?

Митко Соловец?
21.02.2017
19:00:39
Alexander
21.02.2017
19:00:43
когда тебе делать надо, а не мешки ворочить

Nikolay
21.02.2017
19:01:06
объект обычный, джавовый? речь про ждбц?
у тебя есть маппинг объект <-> база. описанный в каком-то виде. объект тут может быть кейс классом, просто классом, даже мапой думаю тоже может быть. не чистый jdbc, обертки над ним, и либы типа slick

Kirill
21.02.2017
19:01:36
Ну, тогда ладно, с таким подходом спорить нет смысла, норм так норм)

Митко Соловец?
21.02.2017
19:02:30
просто мы тогда не получаем накладных расходов

и твой подход можно использовать

Google
Митко Соловец?
21.02.2017
19:02:56
я тебя понял

Nikolay
21.02.2017
19:04:52
чаще всего используют кейс классы скаловские, потому что по ним можно автоматически сгенерировать маппинги туда-обратно с помощью макросов/shapeless

Митко Соловец?
21.02.2017
19:05:50
а вот еще такой, я когда поменял объект, скаловский маппер автоматом мне апдейт запрос сконструирует?

как под капотом это все работает?

Nikolay
21.02.2017
19:06:59
ты имеешь в виду - diff полей построить и по нему апдейт сформировать?

Митко Соловец?
21.02.2017
19:07:08
ага

эта прям сама либа умеет такое анализировать? или самому мапперы писать?

вот есть у нас spring jdbc template, там мапперы сами пишем

Alexander
21.02.2017
19:09:08
там, вроде, был хитрый маппер, который по рефлексии маппит бин на поля запроса

Митко Соловец?
21.02.2017
19:09:16
ни шутя

Alexander
21.02.2017
19:09:43
но он не такой быстрый, как хотелось бы

http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jdbc/core/BeanPropertyRowMapper.html

Nikolay
21.02.2017
19:10:58
такого в готовом виде чтобы предоставляла какая-то из либ - не видел. может быть кто-то другой встречал. тут скорее всего будет сводится к тому что ты 1) перезапишешь весь объект если не хочешь заморачиваться 2) напишешь запрос на апдейт определенных полей сам 3) заморочишься с диффом и сделаешь что-то свое. весьма возможно что 3 уже кто-то сделал

надо бы поискать

Иван
21.02.2017
19:25:30
Так я не понял, что в итоге с getter/setter?

Adam
21.02.2017
19:26:15
генерируй идеей и не трогай больше)

Митко Соловец?
21.02.2017
19:27:03
*ломбок

Adam
21.02.2017
19:28:55
*ломбок
сам то используешь?)

Митко Соловец?
21.02.2017
19:29:05
да

уже полгода наверно

только 1 косяк обнаружил для себя, а так годная либа

Страница 1207 из 2890