|
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 11
|
|
Трёхзвенное приложение ( Android-Glassfish-MySQL )17.05.2014, 22:22. Показов 2183. Ответов 17
Метки нет (Все метки)
Здравствуйте.
Так вышло, что для своего курсового проекта по БД я выбрал разработку трёхзвенного приложения. БД я решил сделать на MySQL, в качества сервера приложений выбрал Glassfish, а клиент на Android. Наброски БД уже есть, но очень сложно разобраться с набором всяких API и технологий JavaEE. В голове каша из всего этого. Как я понимаю, мне понадобится ещё ORM средство, для преобразования таблиц в объекты и обратно. Проблемы: 1) Какое ORM лучше выбрать? Мне необходимо ORM с минимальным порогом вхождения и требуемого времени на изучение(с JavaEE никогда ещё не сталкивался). Я слышал о Hibernate и кажется EJB тоже может маппить. 2) Как организовать обмен данными между сервером приложений и клиентом, чем они должны обмениваться, xml, объектами? Прочитав это на сайте NetBEans https://netbeans.org/kb/docs/j... nt_ru.html, я так понял, что EJB может для этого подойти, но хотелось бы уточнить. 3) Если использовать какое-либо ORM, то понадобится ли JDBC? 4) И реализуем ли вообще такой клиент на Android? Не пойму, дружат ли вообще android и JavaEE? 5) Что я ещё мог забыть, что мне может ещё понадобится для разработки?
0
|
|
| 17.05.2014, 22:22 | |
|
Ответы с готовыми решениями:
17
Подключение к MySql из консольного приложения (Android приложение C# Shell из Play Market) Не пингуется GlassFish с БД MySQL |
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 17.05.2014, 22:30 | |
|
ORM - Hibernate (jpa CRUD repositories)
Передача сообщений клиент-сервер лучше сделать по http передавая объекты json. Можно использовать jersey 2 например. Так же используйте Spring чтобы сделать сервисы.
0
|
|
|
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 11
|
||
| 18.05.2014, 00:23 [ТС] | ||
Не совсем понятно, для каких сервисов нужен spring, какие могут быть сервисы?
0
|
||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 18.05.2014, 00:49 | |
|
Сервис лейер вашей аппликации. У вас есть ДБ лейер, который разговаривает с БД и есть api на который обращается клиент. Между ними должен быть тот, кто выполняет всю логику. Это и есть сервисы.
0
|
|
|
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 11
|
||
| 18.05.2014, 12:42 [ТС] | ||
Ещё вопрос. У меня ведь не веб-клиент, зачем передавать json объекты через http? Может для этого проще воспользоваться RMI?
0
|
||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 18.05.2014, 16:22 | |
|
Я не особый любитель rmi из за потенциальных проблем с прокси и фаерволами но такая реализация тоже возможна.
Добавлено через 2 минуты К тому же http куда легче запускать без клиента в процессе разработки и отладки сервера
0
|
|
|
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 11
|
|
| 26.05.2014, 00:45 [ТС] | |
|
Поизучал Spring, написал entity для моих таблиц, реализовал DAO, пишу facade и view.
Как я понимаю, facade реализует бизнес-логику, но я видел ещё какие-то @service. А view являются представленим и должны посылаться в каком-то виде клиенту. Получается, что у меня есть Model, View, но нет Controller-а. Было б времени побольше, я б почитал книги, но инфу приходится урывать кусками из статей. Я запутался в бесконечных абстракциях и у меня возникают вопросы. 1) Как писать controller, если у меня толстый клиент? 2) Чем отличается facade от @service? 3) Как мне прикрутить сервер приложений к тому, что я уже нагородил? 4) Вопросы, которые стыдно задавать...
0
|
|
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 26.05.2014, 01:07 | |
|
1. Контроллер это слой связи клиента с сервером. Он отвечает за то чтобы получить просьбу клиента, вызвать сервис и отдать ответ.
2. Фасад это дизайн паттерн, @Service это аннотация спринга указывающая на то, что класс является сервисом. То есть тем слоем, к кому обращается контроллер и кто имплементирует всю логику и общается с моделью (БД) 3. А где вы весь предыдущий код писали?
0
|
|
|
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 11
|
||||||||||||||
| 26.05.2014, 03:08 [ТС] | ||||||||||||||
А если мне придётся писать свой контроллер, то мне нужно будет указать аннотации @service для классов facade?
Примерно так выглядит мой проект http://i024. radikal. ru/1405/41/4be5fc07441c.jpg (почему-то вставка изображений не работает как надо, поэтому просто ссылка) Добавлено через 1 час 24 минуты И думаю стоит показать, что я имел ввиду под facade. Класс AddressFacade
0
|
||||||||||||||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
||||||||||||
| 26.05.2014, 10:59 | ||||||||||||
Сообщение было отмечено DonSlockZ как решение
Решение
Я так понял класс AddressView это объект, который вы будите передавать с клиента на сервер.
Неочень понятно как вы используете ваш фасад. Например слой DAO у вас имплементирован статическими методами, но фасад нет. То есть вы будите его сами создавать всегда? Или сделаете его singleton? Аннотация @Service никак не влияет на ход вашей программы. Она лишь поможет вам т.к Spring возьмет на себя работу по синхронизации, созданию и всему жизненному циклу объекта. То есть если вам нужно использовать сервис из другого слоя, вы просто пишите
Добавлено через 9 минут UPD. Посмотрел книгу по ссылке. Там используются довольно устаревшие методы работы со spring. Теперь понятно почему вы запутались. По-сути @Service делает то же что в примере в книге делает файл xml
0
|
||||||||||||
|
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 11
|
|||
| 26.05.2014, 19:09 [ТС] | |||
А классы view и entity просто можно скопировать для клиента на Android?
0
|
|||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
||||
| 26.05.2014, 22:01 | ||||
|
ps. Entity никуда передавать ненадо. Передаются только те объекты, которые используются для общения. То есть вы получаете entity из БД и на основе его строите ваш объект для передачи (view в вашем случае, но вообще такие объекты имеют постфикс Dto (data transfer object)
0
|
||||
|
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 11
|
||||||||
| 26.05.2014, 23:19 [ТС] | ||||||||
Кликните здесь для просмотра всего текста
0
|
||||||||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 26.05.2014, 23:56 | |
|
Вам надо поменить фасад аннотацией @Service а так же сконфигурировать спринг сканить пакет, где находится этот класс.
0
|
|
|
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 11
|
|||||||||||||
| 27.05.2014, 01:21 [ТС] | |||||||||||||
Кликните здесь для просмотра всего текста
Добавлено через 32 минуты Хотя, получается я использую те самые старые методы, о которых вы говорили, причём одновременно с @Autowired.
0
|
|||||||||||||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 27.05.2014, 02:01 | |
|
http://www.mkyong.com/spring/s... omponents/ -- оба метода
http://docs.spring.io/spring-j... 06s02.html -- конфигурация из java классов
1
|
|
|
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 11
|
||
| 27.05.2014, 23:03 [ТС] | ||
|
Были проблемы с ленивой инициализацией, но я просто её выключил, ибо это дополнительные сложности, когда мне требуется уложиться в сроки. Спасибо! Вы мне очень помогли со всем разобраться. Надеюсь с реализацией Api для обмена данными клиента и сервера у меня столько вопросов не возникнет.
0
|
||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 27.05.2014, 23:58 | |
|
незачто
0
|
|
| 27.05.2014, 23:58 | |
|
Помогаю со студенческими работами здесь
18
Имеется база данных MySQL (с сайта), в ней данные о товаре, как проще всего сделать онлайн Android-приложение
После рестарта GlassFish перестает видеть веб приложение Как приложение Android написать на С++ в Android NDK, чтоб получить *.apk? Нужен мануал Приложение вылетает на android 6.0 и ниже, сделанное в Android Studio Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|