![]() |
Модераторы: Partizan, gambit Страницы: (15) Все « Первая ... 5 6 [7] 8 9 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]() ![]() ![]() |
|
Allexx |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 16.12.2003 Репутация: нет Всего: нет |
|
|||
|
||||
arilou |
|
||||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Ну с этим и в дотНете все в порядке ![]()
Вероятно, тут используется более высокий уровень абстракции. Но реализация ADO.NET дает возможность использовать навороты того же SQL Server'а, а не только то подмножество, которое общее для всех. |
||||
|
|||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Тоже верно, приложение можно оптимизировать под конкретную БД. Зато при переходе на другую БД возникнут проблемы. Для энтерпрайз приложений на разных ОС вещь не такая уж редкая. -------------------- |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Согласен. Но это уже лирика, правда? |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
По сути, да
![]() -------------------- |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Да, раз уж заговорили о базах данных, хочется спросить: а есть ли среди стандартных классов JAVA (в том же JDBC) что-то хоть отдалённо похожее на DataSet, DataTable, DataRow и DataRelation ? ИМХО, самые удобные средства для detached-работы с базой данных из всех существующих. Плюс, типизированные датасеты, которые генерируются на основании XML-схемы.
-------------------- ![]() |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
JDBC построена на интерфейсе ResultSet и его сабинтерфейсах: CachedRowSet, FilteredRowSet, JdbcRowSet, JoinRowSet, RowSet, SyncResolver, WebRowSet. Реально модель довольно близка к ADO.NET; АДО в этом смысле более "наворочен", хотя JDBC может делать все то же, что и АДО, за исключением релейшншипов.
Кстати, здесь сравнивать сложно, т.к.языки идут своими путями. В Java широко используется Object-Relational Mapping, фреймворки типа Hibernate, JDO. Грубо говоря, можно набор объектов сохранять в БД, причем учитываются такие вещи как наследование (- вот и релейшншипы). Enterprise Java Beans в некотором смысле ложат АДО.НЕТ одним левым мизинцем, поскольку там вообще программисту никакой БД логики писать не надо - один файл конфигурации, и то в простых случах он займет меньше, чем твой пост. Но EJB ограничены серьезными приложениями, конечно, для простых штук типа складского учета они никак не пойдут. -------------------- |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
ORM - это, другими словами, persistence, так? Microsoft предложат свой вариант такого решения в новом продукте Microsoft Business Framework. Датасеты - незаменимая вещь при работе с табличными данными, будь то информация полученная из БД, или сформированная в рантайме, полученная от веб-сервиса, зачитанная из XML-файла. Кстати, рульная весч: можно взять XML-файл, прочитать его в датасет, и работать с ним как с таблицей БД !!! Поработав, сохранить обратно в файл, поток, http-стрим и т.п. А если к тому же не полениться и сформировать XML-схему, тогда можно сформировать типизированный датасет, который на порядок удобнее использовать, добавляется возможность проверки корректности структуры данных по заранее сформированным ограничениям (unique key, foreign key, constraint). Кроме всего прочего, датасеты предоставляют богатые возможности по отслеживанию изменений в данных (версионность каждой записи в любой таблице), а используя DiffGram можно пересылать в БД только сделанные изменения, а не весь датасет. -------------------- ![]() |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Взято отсюда. Кто хочет прокомментировать?
|
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Уже частный случай. Остальное вроде прилично, но как-то перестал верить я этим тестам. Кто платит, тот заказывает музыку... Интересно также было бы узнать, во-первых, какие версии были протестированы, а главное - на какой платформе? -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Это спорное утверждение ![]() С точки зрения сложного бизнес-приложения, программисту намного удобнее оперировать понятиями предметной области, нежели записями из таблицы (например, объектами Клиент, вместо отдельных записей из таблицы Клиенты). Как известно, существует 2 основных подхода к работе с реляционными данными в приложении. 1) Table Mapping. Его суть заключается в том, что для каждой таблицы в БД, в программе используется один класс. Данный подход всегда пропагандировался MS начиная с DAO. Были resultsets, recordsets. Теперь - datasets, причем последние реализуют disconnected-модель работы с БД. 2) Domain Model. Смысл в том, что для каждого типа записи в таблицах БД создается отдельный класс, т.е. программа оперирует объектами этого типа как отдельными сущностями, т.е. понятиями своей предметной области. Реализация данного подхода называется O/R mapping. Для .NET уже существуют ORM-проекты. Даже я свой написал ![]() Оба подхода имеют преимущества и недостатки. Table Mapping хорошо вписывается там, где не много таблиц, и операции над реляционными данными сводятся к CRUD. В .NET типизированные датасеты позволяют реализовать проверку соответствия типов на этапе компиляции (что есть хорошо). К сожалению, типизированные датасеты не очень хорошо подходят на роль базовых классов для бизнес-сущностей, потому что содержать очень много автосгенерированного кода, усложняющего понимание. Domain Model хорошо подходит, когда необходимо программировать бизнес-процессы, которые оперируют несколькими сущностями. Например, проводка финансовой транзакции, как минимум, затронет такие сущности, как Счет, Клиент, Приход, Расход и т.д. В данном сценарии программисту намного проще реализовать бизнес-операцию, если он будет брать из репозитория экземпляры нужных ему сущностей, модифицировать их, и commit'ить изменения в хранилище. Хорошие ORM пакеты выполнят всё, что связано с БД, сами (откроют-закроют транзакцию, обеспечат блокировку и т.д.). К сожалению, пока .NET не содержит встроенных средств для поддержки ORM. Говорят, будет Object Spaces. Сейчас уже есть сторонние разработки - DeKlarit, OpenAccess.NET, NHibernate, и т.д. |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Даже не буду спрашивать, откуда появилось ![]() Вообще, я слышал больше негативных отзывов о подобных механизмах отображения, чем позитивных. В большинстве случаев, если база спроектирована грамотно и адаптирована под твою задачу (при непосредственном участии твоих коллег или твоем лично), вполне можно обойтись JDBC и прочими стандартизирующими надстройками. Но я согласен, что в серьезных приложениях такой подход должен быть удобнее. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
А какие именно приводились "негативные" отзывы? |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Тяжело отслеживать производительность и находить ошибки, сложность настройки и т.д. Многи сходятся во мнении, что пока объектно-ориентрованные БД не заменят реляционные, популярность и эффективность подобных систем будет невысока.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
По-моему, это 2002 год, то есть, Java 1.5 еще не было ![]() ![]() -------------------- |
|||
|
||||
mr.DUDA |
|
||||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Я подчеркнул бы слова "табличные данные". Ведь речь не идёт об объектах, а именно о упорядоченном наборе данных, организованном в виде структуры определённого вида, со средствами для доступа, управления и анализа данных. Датасет - это более низкий уровень, чем объект, маппированный, на БД. Но в то же время, с датасетом легко работать и точно знаешь, что происходит в любой момент времени, в то время как при ORM-подходе приходится терпеть "накладные расходы" на содержание объектов в транзакциях, на создание и отслеживание связей между объектами, поддержку маппирования (съедающую иногда больше процессорного времени, чем выполнение запроса к БД)... Я считаю, что датасеты .NET (aka ADO) - полезная вещь, и при умелом обращении могут заменить маппированные на БД объекты. -------------------- ![]() |
||||
|
|||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |