Опять срачь за ORM
Apr. 5th, 2013 12:01 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
http://tonsky.livejournal.com/275048.html
Если обработаться на жабе и дотнете, то записи в таблицах БД действительно начинают казаться объектами, только заколдованными злыми DBA по чернокнижию дейта и кодда. И нужно использовать специальные магические зелья в виде ORM чтобы объекты расколдовать.
А если работать в основном с СУБД и понимать, что "базе-то не объекты, в базе именно что отношения." то внезапно оказывается, что объекты-то не так часто и нужны, а иногда и вообще вредны.
Оно конечно выглядит просто - "взял из ORM объект, показал в форме, по нажатию ОК отдал его ORM на сохранение". Но подобные решения намертво увязывают структуру БД, результаты запросов и типы объектов в программе. И вынуждают использовать в БД только структуры данных, которые хорошо в такое укладываются.
Если обработаться на жабе и дотнете, то записи в таблицах БД действительно начинают казаться объектами, только заколдованными злыми DBA по чернокнижию дейта и кодда. И нужно использовать специальные магические зелья в виде ORM чтобы объекты расколдовать.
А если работать в основном с СУБД и понимать, что "базе-то не объекты, в базе именно что отношения." то внезапно оказывается, что объекты-то не так часто и нужны, а иногда и вообще вредны.
Оно конечно выглядит просто - "взял из ORM объект, показал в форме, по нажатию ОК отдал его ORM на сохранение". Но подобные решения намертво увязывают структуру БД, результаты запросов и типы объектов в программе. И вынуждают использовать в БД только структуры данных, которые хорошо в такое укладываются.
no subject
Date: 2013-04-05 11:18 am (UTC)жанр "срачей" это бессмысленная трата времени жизни, и удовольствия интеллектуального никакого
если коротко, можно ответить так: "не нравится ОРМ -- не используй"
по делу, могу намекнуть идею: данные внутри БД и внутри клиента располагаются и обрабатываются по-разному в ЛЮБОМ случае
чем случай с ОРМ хуже непонятно каких альтернатив в непонятно каких случаях -- вам стоило бы сесть и глядя в зеркало самому себе в глаза написать эссе
Кстати за индусов белорусы зря переживают -- у них в полный рост сейчас идут курсы и скалы, и хаскеля, и R
no subject
Date: 2013-04-05 11:57 am (UTC)no subject
Date: 2013-04-05 01:59 pm (UTC)no subject
Date: 2013-04-05 12:44 pm (UTC)no subject
Date: 2013-04-05 05:08 pm (UTC)no subject
Date: 2013-04-05 05:28 pm (UTC)String userId = p.getUserId();
Number amount = p.getAmount();
p.setCode(PAID_CODE);
это ужас-ужас, а правильно
String userId = (String) p.get("UserId");
Number amount = (Number) p.get("Amount");
p.set("Code", PAID_CODE);
это ж совсем другое дело, никаких get/set... o wait...
no subject
Date: 2013-04-06 02:42 am (UTC)Если у нас динамическая типизация - касты лишние.
Плюс к тому, надо помнить, что 99.99% геттеров и сеттеров навсегда остаются тривиальными.
no subject
Date: 2013-04-05 05:32 pm (UTC)желательно на GCC под линуксом с Ораклом