41 / 37 / 8
Регистрация: 24.07.2013
Сообщений: 219
|
|
БД в Андроид26.07.2015, 15:41. Показов 1017. Ответов 17
Метки нет Все метки)
(
Добрый день!
Подскажите пожалуйста такую вещь: У меня есть 3-ри класса... К примеру: Компания, Клиент, Услуги... И есть необходимость хранить данные всех этих клиентов предоставляемых услуг и тд. Вопрос: Для записи и чтения из БД данных, как правильно будет сделать, 1-н класс для работы с БД который будет работать со всеми данными и обслуживать все эти классы или же сделать каждому классу по отдельному классу для работы с БД... На сколько я понимаю правильным должен быть второй вариант по принципу того: А что будет если количевство классов разрастется до десятков-сотен ну в таком духе... Но все таки решил уточнить потому как испытываю какие то сомнения.... и чувствую что где-то что-то упускаю....
0
|
26.07.2015, 15:41 | |
Ответы с готовыми решениями:
17
С++ и Андроид Андроид БД Андроид с нуля |
Модератор
![]() 3403 / 2174 / 353
Регистрация: 13.01.2012
Сообщений: 8,430
|
|
26.07.2015, 15:50 | |
по идее есть сущность которая может взаимодействовать с БД и есть объекты которые используя эту сущность могут например сохранять или читать или модифицировать себя в БД. таким образом видим что нужно сделать и то и то)
0
|
41 / 37 / 8
Регистрация: 24.07.2013
Сообщений: 219
|
|
26.07.2015, 16:05 [ТС] | |
Видимо где-то вы меня не поняли
![]() Мы либо делаем гиганский класс который будет служить для работы с бд для всех сущностей приложения... что не очень красиво... или мы будем для каждого класса который хочет работать с бд отдельную сущность обслуживающую только данный класс и его взаимодействие с общей БД.... Просто тогда сущностей которые могут взаимодействовать с БД будет столько же сколько и классов которые хранят свои данные.... А это палка на двух концах... Ведь если делать так то сразу же нужно делать какую то синхронизацию что бы приложения не рухнуло.... когда один класс записывает а другой читать пытается.... Добавлено через 6 минут Либо нужно делать так, что бы не было возможности одновременно пытаться делать и то и то... а это уже урезание функциональности... ведь грубо говоря пользователь выбирает услуги жмет кнопку отказаться... в этот момент открывается соединение с БД и через менеджер услуг поля таблиц и взаимосвязи начинают удаляться... и в этот момент пользователь может ведь перейти на соседнюю страницу где отображаются все возможные услуги... и там же этот же менеджер должен загрузить данные... карочи чет у меня логика храмает... Все правильно просто Нужно сделать так что бы БДМенеджер(класс) ожидал пока будет доступ к БД, и уже потом черпал от тудава данные
0
|
Модератор
![]() 3403 / 2174 / 353
Регистрация: 13.01.2012
Сообщений: 8,430
|
|||
26.07.2015, 16:08 | |||
Добавлено через 2 минуты
1
|
41 / 37 / 8
Регистрация: 24.07.2013
Сообщений: 219
|
|
26.07.2015, 16:15 [ТС] | |
Во ) большое спасибо за дискуссию и подсказки
![]() class User{} class DataBaseUserManager{} Добавлено через 1 минуту Ну и естественно какой-то appDBManager необходим который будет при старте приложения проверять в принципе существует ли база и тд..
0
|
41 / 37 / 8
Регистрация: 24.07.2013
Сообщений: 219
|
||
26.07.2015, 16:25 [ТС] | ||
Небольшая путаница в голове из-за вопроса а где же тогда должна создаваться сама БД... ведь каждый DB(classname)Manager{} содержит различные сведения о таблицах ключах и тд, которые скрыты инкапсуляцией... и смысла дублировать данные противоречит принципам ООП и тд.. как же тогда лучше сделать...
Создать ДБМанагер(общий) который будет создавать БД и поочередно к каждому классу МАНАГЕР для каждого класса передавать управление да бы тот инициализировал свои таблицы... Опять таки глупо как то... ведь при добавлении сущностей придеться переписывать ДБМанагер Добавлено через 3 минуты Что бы не засорять сам класс.... На сколько я понимаю сущность не должна записывать саму себя в БД, этим должна заниматься отдельная сущность обслуживающая взаимодействие данного класса с БД... Это как с аддаптерами, можно в принципе и в самом классе накидать, но читаемость и многое другое страдает,.. Да и нарушает некоторые базовые принципы...
0
|
Модератор
![]() 3403 / 2174 / 353
Регистрация: 13.01.2012
Сообщений: 8,430
|
||
26.07.2015, 16:26 | ||
0
|
41 / 37 / 8
Регистрация: 24.07.2013
Сообщений: 219
|
||||||
26.07.2015, 16:30 [ТС] | ||||||
Что-то в таком духе он будет содержать на сколько я это вижу
0
|
41 / 37 / 8
Регистрация: 24.07.2013
Сообщений: 219
|
|
26.07.2015, 16:40 [ТС] | |
Вот да, теперь последний вопрос, на уровне того что Должен быть еще и AppDBManager который будет в случае необходимости создавать базу данных, и на сколько я себе это вижу то будет передавать ссылку всем другим обьектам поочередно да бы каждый из них создал нужные таблицы в базе и связи которые ему необходимы..
AppDBManager будет передавать каждому Manager в цепочке ссылку на сойденение с БД и номер версии БД Добавлено через 1 минуту Про апдейт мне вообще страшно думать если вдруг будет такая необходимость... так что пока просто забываю про такие мелочи ![]() Добавлено через 57 секунд А общие таблицы связей типа Клиент/Услуга ,будет наверное создавать основной Манагер Добавлено через 2 минуты Просто все классы уже написаны ) интерфейс впринципе тоже готов, осталось разобраться с базой ) приложением сложно назвать но все таки лучше же делать изначально все правильно и правильно проектировать ) А то научусь делать не правильно с мыслью та типа поучиться и тд.. потом фигню писать буду ![]()
0
|
![]() 7 / 7 / 2
Регистрация: 28.08.2014
Сообщений: 179
|
|
26.07.2015, 17:36 | |
alex1392, одна БД для всех классов, не зависимо сколько их будет, при условии что это будет оптимальный вариант. Даже если что то в будущим поменяется, например структура БД, то можно будет безболезненно её переделать, сохранив все данные в ней при помощи афтер, если не ошибаюсь .
0
|
41 / 37 / 8
Регистрация: 24.07.2013
Сообщений: 219
|
||
26.07.2015, 18:17 [ТС] | ||
Вопрос который осталось решить, это кто будет создавать промежуточные таблицы соответствия (Id(User),Id(service) Добавлено через 29 минут Оригинальная вещь: Да бы создать БД и все нужные таблицы для каждого ДБМанагера необходимо вызвать конструктор.. то есть создать его... Создать их! в правильной поочередности, то есть по сути мне нужен какой то МейнДБМанагер как я и говорил выше который их в правильной поочередности создаст и тем самым каждый из них проинициализирует БД своей таблицей.. после чего уже можно будет работать... То есть получается что при запуске App У меня будет new MainDBManager(); а в нутри него будет собственно проверка база существует? Если да то просто выходим и апп работает дальше если нет то идет вызов всех манагеров new DBUserManager(); new DBServiceManager(); и тд.... Добавлено через 57 секунд попровте пожалуйста если в моей логике есть погрешность, а если нету то скажите плиз что я правильно понимаю концепцию сия ) за ранее большое спасибо Добавлено через 1 минуту а да, new MainDBManager и всех вызовах внутри мы эти переменные ничему не приравниваем, что бы они были созданы и сразу же после выполнения создания БД вылетали в мусор Добавлено через 3 минуты а у самих манагеров будут статические методы чтения записи удаления, в нутри которых будет получение соединения с БД выполнение необходимых действий и закрытия соединения..
0
|
![]() |
|
26.07.2015, 18:25 | |
если очень хочется все-таки сделать ORM, прочитайте документацию например на TMS aurelis или любую другую реализацию ORM
имхо штука очень спорная для задач масштаба среднего предприятия считаю ее избыточной слегка
0
|
41 / 37 / 8
Регистрация: 24.07.2013
Сообщений: 219
|
||
26.07.2015, 18:58 [ТС] | ||
Добавлено через 21 минуту Как то рылся по google и сплошные примеры БД мол типа есть одна таблица и один класс, а что бы найти со связками и как тогда делать фиг нароешь... куда не плюнь примеры в одну таблицу... (
0
|
![]() |
|
26.07.2015, 19:03 | |
да
вся сложность взаимодействия таких систем в их связях если мы говорим про мобильные приложения - каждый класс должен уметь себя передавать/восстанавливать а потом уже процедура, которая ведает связанными классами а еще отдельно - работа с классами - справочниками... в "универсальной" системе сложно все предусмотреть на эту тему можно целую статью написать, тут не влезет ((
0
|
41 / 37 / 8
Регистрация: 24.07.2013
Сообщений: 219
|
|
26.07.2015, 19:16 [ТС] | |
Ну статью писать не стоит
![]() Добавлено через 1 минуту Сейчас склоняюсь к мысли что нужно плюнуть на все это, пусть МЕЙН МАНАГЕР создает всю базу и сам контролирует этот вопрос, а манагеры будут уже работать только с сылкой на базу и данными которые нужно вычитать/записать/удалить/обновить/и тд.
0
|
![]() 4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
26.07.2015, 19:21 | |
ИМХО название системы - намёк: им:
0
|
26.07.2015, 19:21 | |
Помогаю со студенческими работами здесь
18
Программирование на андроид MySQL и Андроид Кодировка в андроид OnClickListener в Андроид Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Введение в Q# - язык квантовых вычислений от Microsoft
EggHead 19.05.2025
Microsoft вошла в гонку технологических гигантов с собственным языком программирования Q#, специально созданным для разработки квантовых алгоритмов. Но прежде чем погружаться в синтаксические дебри. . .
|
Безопасность Kubernetes с Falco и обнаружение вторжений
Mr. Docker 18.05.2025
Переход организаций к микросервисной архитектуре и контейнерным технологиям сопровождается лавинообразным ростом векторов атак — от тривиальных попыток взлома до многоступенчатых кибератак, способных. . .
|
Аугментация изображений с Python
AI_Generated 18.05.2025
Собрать достаточно большой датасет для обучения нейронной сети — та ещё головная боль. Часами вручную размечать картинки, скармливать их ненасытным алгоритмам и молиться, чтобы модель не сдулась при. . .
|
Исключения в Java: советы, примеры кода и многое другое
Javaican 18.05.2025
Исключения — это объекты, созданные когда программа сталкивается с непредвиденной ситуацией: файл не найден, сетевое соединение разорвано, деление на ноль. . . Список можно продолжать до бесконечности. . . .
|
Как сделать SSO (Single Sign-On) в C# приложении
stackOverflow 18.05.2025
SSO — это механизм, позволяющий пользователю пройти аутентификацию один раз и получить доступ к нескольким приложениям без повторного ввода учетных данных. Вы наверняка сталкивались с ним, когда. . .
|
Kubernetes с Apache Flink для обработки данных в реальном времени
Mr. Docker 17.05.2025
Kubernetes — это целая философия управления распределёнными приложениями. В отличие от "примитивных" решений вроде Docker Swarm, K8s (как его ласково называют в тусовке DevOps-инженеров) предлагает. . .
|
Использование декораторов в Python
py-thonny 17.05.2025
Если вы когда-нибудь задумывались о том, как красиво расширить функциональность кода без лишней возни и дублирования, декораторы в Python — та самая волшебная палочка, которую вы искали. По сути, это. . .
|
Реализация многопоточных сетевых серверов на Python
py-thonny 16.05.2025
Когда сталкиваешься с необходимостью писать высоконагруженные сетевые сервисы, выбор технологии имеет критическое значение. Python, со своей элегантностью и высоким уровнем абстракции, может. . .
|
C# и IoT: разработка Edge приложений с .NET и Azure IoT
UnmanagedCoder 16.05.2025
Мир меняется прямо на наших глазах, и интернет вещей (IoT) — один из главных катализаторов этих перемен. Если всего десять лет назад концепция "умных" устройств вызывала скептические улыбки, то. . .
|
Гибридные квантово-классические вычисления: Примеры оптимизации
EggHead 16.05.2025
Гибридные квантово-классические вычисления — это настоящий прорыв в подходах к решению сложнейших вычислительных задач. Представьте себе союз двух разных миров: классические компьютеры, с их. . .
|