|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|||||||||||
JPA: замапить поле типа Image23.11.2014, 19:48. Показов 1389. Ответов 9
Метки нет (Все метки)
Есть ли возможность как-то пометить поле сущности аннотацией чтобы оставить его как Image, а не как массив байт ?
Ну тоесть сейчас есть:
Собственно почему хочу именно так: Image автоматически при конвертации в xml кодируеться как base64 и в итоге от меня не надо никаких велосипедов и телодвижений при использовании объекта на стороне клиента, если же я впишу byte то всё уже не будет так мультиплатформенно и красиво, а ведь мне возможно придёться этот объект из xml получать и не только в java и соответственно могут возникнуть проблемы потом как это назад в картинку вернуть. Конечно есть вариант ещё хранить в базе сразу в base64 значение и в итоге сделать обычное поле String, но согласитесь поле String photo64; как-то дико выглядит, да и неудобно это будет. Добавлено через 8 минут Более вдумчивое чтение ошибки натолкнуло на мысль Exception Description: The type [class java.awt.Image] for the attribute [photo] on the entity class [class entity.Person] is not a valid type for a lob mapping. For a lob of type BLOB, the attribute must be defined as a java.sql.Blob, byte[], Byte[] or a Serializable type. For a lob of type CLOB, the attribute must be defined as a java.sql.Clob, char[], Character[] or String type.. Please see server.log for more details. Вот только чтобы мне такого взять Serializable для изображений в java ...
0
|
|||||||||||
| 23.11.2014, 19:48 | |
|
Ответы с готовыми решениями:
9
Нужно из базы MSSQLSERVER2000 вычитать поле типа Image в переменную типа Image
Хранение файлов в поле типа IMAGE |
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
||
| 23.11.2014, 20:08 | ||
|
1
|
||
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
| 23.11.2014, 20:58 [ТС] | |
|
KEKCoGEN, я добавлю DTO как только в нём возникнет необходимость, в моём примере список полей для клиента тот же что получает сервер и пока что смысла в ещё одном объекте-прослойке нет (логично что клиент использует облегчённый объект у которого нет аннотаций и прочего, но за счёт xml всё декодируеться как надо). Пока что я всё же хотел бы заставить мапиться мой blob на какой-то аналог Image который потом можно загнать в xml как base64 ...
Добавлено через 23 минуты А вообще я согласен что в реальной жизни у меня там будет DTO и всё будет красиво, наверное, но ... как тогда принято хранить изображения в базе чтобы удобно мапить через JPA? В виде base64 и делать поле String photo64 или как? Ато у меня нет опыта работы в написании серверной части так что я не видел "как надо", я сейчас работаю как субд'шник, а не программист java. Вообще я так понимаю у тебя опыт есть и я был бы весьма признателе если бы ты слил мне какой-то из своих проектов где всё канонично, в идеале если бы это был какой-то проект RESTful сервиса (если у тебя такой есть). Ато извечная проблема: в книгах с пометкой "для профессионалов" есть hello world'ы, а также пример сервиса раздающего информацию о книгах или о людях (где два или и вовсе один объект замаплены и раздаються сервисом), чего-то полноценного там нет
0
|
|
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 23.11.2014, 23:58 | |
|
насчет dto это не только удобство но и безопасность. передавать клиенту поля id базы данных небезопасно тк это значение легко предсказуемо и следовательно дает возможность через рест запросы получить информацию об объектах соседях. Представьте например что вы храните номера банковских счетов и по какому то запросу представляете информаицю о счете. В передаваемом объекте будет фигурировать id и соответственно можно будет легко получить соседние счета просто прибавив или отняв единицу. Пример конечно утрированный однако суть думаю ясна.
насчет того как хранить в бд изображения. в идеале никак. Изображения должны лежать на диске и выдавать их должна не аппликация а apache например. Тем самым весь статик контент не проходит через томкат и тем более медленную бд и не нагружает систему. Если же все таки картинки лежат в бд, то имхо большой разницы как хранить нет. Как удобно... Насчет проектов. большие энтерпрайз проекты которые я пишу на работе прислать я не могу по понятным причинам, а последний раз когда я писал веб аппликацию один - был в универе и исходников уже давно нет да и это вряд ли могло бы служить каким либо примером. Добавлено через 47 секунд извиняюсь за опечатки если есть. Пишу с таблета
1
|
|
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
||||
| 24.11.2014, 01:28 [ТС] | ||||
|
Как же я тогда пользователю буду отдавать Person без id, а если он скажет обнови мне Васю Пупкина, он фамилию сменил на Васин то как я буду знать что за Пупкин у меня там в базе должен обновиться, может у меня их уже 10ок так что вопрос с тем как передать пользователю объект без id для меня не очевиден, а если пользователь скажет "У васи id = 3" то ок. Ну можно ещё ref ссылку всунуть (я видел пример в одной из книг), но то что у объекта есть поле String ref = "api/Person/23" ничем не лучше String id = "23", вообще можно даже private String id сделать, чтобы пользователя меньше смущало это всё, но я не вижу выхода без id. Да и если смотреть дальше: у Личности есть адресс (ещё один объект), телефон (ещё один объект) и электронная почта (допустим это тоже объект). Я планировал отдавать клиенту следующий объект при запросе персоны по id: id персоны фио дата рождения id адреса id телефона (это не имеет смысл, но будем считать что телефонные записи содержат ... ну пускай домашний, мобильный, пейджер, запасной номер и т.д, тоесть нельзя оставить просто полем) id почты Дальше если нужен телефон персоны то можно имея объект персоны по idшнику запросить у сервиса телефон и т.д. В общем я и сам вижу что я продолжаю смотреть в разрезе хранения объектов в бд, видимо сказываеться то чем я занимаюсь последние пол года на работе, но я не вижу решения лучше. Ведь я не могу при запросе персоны по id отдавать ему xml'ину с данными подтянутыми по 10 таблицам через fk, это ведь неправильно будет когда кто-то ищет персону по фамилии "Пупкин", а я ему вместо того чтобы отдать "Вася пупкин, код телефона 1" отдам Васю Пупкина весом в 10кб xml'я со всеми его адресами и половыми связями ... Как же мне тогда поступить ? ![]() Хотя в принципе наверное хранение в base64 будет не столь плохим вариантом как мне казалось в самом начале.Добавлено через 7 минут Ну или просто поделитесь кто-то ссылкой пожалуйста на взрослый проект restful сервиса где есть также работа с бд, hello world'ов в сети пруд пруди, в литературе, к сожалению, тоже. Ну или может вы встречали какую-то взрослую книгу где не просто обо всём на свете понемногу, а есть уклон именно в разработку такого рода сервиса с реализацией (без реализации 500 страниц суждений о том как должен вести себя restful сервис и как он прекрасен я уже тоже находил и листал). Отмечу что я уже пытался найти что-то путнее на гитхабе и битбакете, но хелло ворлды с одним классом, одним сервисом и одним методом GET преследовали меня и там, может я не столь удачно подобрал ключевые слова, но реально у меня в итоге нет ни одного полноценного примера как делают те кто с опытом.
0
|
||||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
||||
| 24.11.2014, 07:38 | ||||
0
|
||||
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|||
| 24.11.2014, 12:44 [ТС] | |||
|
Вариант 1) Клиент запросил персону из сервиса по id, вероятно он будет отображать её в gui полностью с городом, телефоном и т.д - отдаём ему Персону и к ней в придачу объект Адрес, Телефон, Почта, МестоРаботы ... в общем 10кб xml'я. Вариант 2) Пользователь ищет всех кто живёт в городе Кукуевск, он ожидает получить список Персон (в любой системе ведь возникнет ситуация когда надо искать по каким-то параметрам и в ответ надо будет отправить список результатов) ну или скажем он хочет найти всех у кого день рождения в этом месяце, не столь важно: важно что он ищет список людей и результатов может быть много, допустим 100. Учитывая эти особенности несложно догадаться что клиенту в таких случаях врятли нужны полные данные, ему хватит и фио чтобы списком вывести в gui те персоны что подошли по параметрам. Как же я тогда должен поступить когда у меня есть два варианта использования: когда клиент запросил персону и ему надо все данные и когда клиенр ищет что-то и результатом будет список данных о персонах, где клиенту пофиг с какого они города и какой у них адрес, вероятн он выберет одну персону из списка которая и была нужна и уже по ней запросит полные данные. У меня пока возник только простейший вариант: отдавать клиенту Персону включащую все перечисленные поля-объекты, но сделать их подтягивание опциональным (в виде доп. параметров запроса, например api/person/search=Kukuevsk&Address&Phone&WorkPlace) только если пользователь запросил их в виде параметров иначе вместо них возвращать null, но у этого подхода ведь тоже есть минуса - клиенту постоянно надо проверять всё на null'ы и переполучать данные по персоне заново если надо дотянуть какое-то поле В общем я поэтому и прошу какой-то более удачный пример, ато мой набросок с персонами (это мой тестовый проект где я стараюсь пройтись по всем проблемам что будут у меня в реальном проекте: список результатов, поля с изображениями, поля с датами, подтягивание полей связанныщ с сущностью из других талиц) выглядит стрёмно, мне бы что-то из реального мира где всё сделано по канону
0
|
|||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
||
| 25.11.2014, 17:46 | ||
|
Думаю тема стала оффтопом и лучше свернуть обсуждение.
0
|
||
| 25.11.2014, 20:00 [ТС] | |
|
0
|
|
| 25.11.2014, 20:00 | |
|
Помогаю со студенческими работами здесь
10
Вставить картинку в поле типа image Замена фрагмента текста в поле типа image? Как занести данные в поле типа IMAGE FormView c элементом Image и поле типа OLE object в базе. Можно ли их подружить? Статическое поле абстрактного класса в как наследуемое поле и преведение его типа Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|