2014-11-13 3 views
0

Поддерживает ли Java кеширование? Поскольку мне не разрешено использовать стороннюю структуру или библиотеку из-за политики, я бы хотел создать собственный кеш, который может хранить данные базы данных. Когда я пытаюсь исследования с помощью Google, я вижу только те JCS, Ehcache, спящий режим и т.д. ...
Например, это кэширование для C#
- http://msdn.microsoft.com/en-us/library/system.web.caching.cache(v=vs.110).aspx

Пожалуйста, поправьте меня, если я ошибаюсь.Можно ли создать собственный кеш в Java? не сторонние рамки?

+0

Да. На Java реализовано множество кэшей. Вы, безусловно, можете реализовать свой собственный кеш. –

+0

@ElliottFrisch Я использую свой собственный кеш не так просто, как C#? – Adrian

+1

Учитывая распространение сторонних систем кэширования Java и, насколько мне известно, нет специального эквивалента вашей связанной функции C#, встроенной в Java. Java предшествует и не совпадает с C#. –

ответ

4

Вы можете приступить к созданию собственной системы кеша, используя Flyweigth Pattern. Это можно сделать с помощью простого массива или чего-то более сложного, такого как Map<K,V>, и, вероятно, используя ConcurrentHashMap<K, V>.

Если вы работаете в веб-приложении, вы можете использовать ServletContext в качестве кеша, так как его элементы распределены между всеми приложениями, но будьте осторожны, так как ваши классы не должны напрямую обращаться к этому классу, вместо этого получить доступ к нему из a Servlet или другую технологию, которая поможет вам получить к ней доступ.

Тем не менее, создать собственную систему кеша не рекомендуется. Лучше использовать кеш из библиотеки, которая предлагает больше возможностей, чем просто базовый гигантский параллельный Map<K, V> в памяти.

+0

Спасибо за ответ, и это действительно полезно !. У меня есть быстрый вопрос. Знаете ли вы, почему JAVA не поддерживает легкий класс кеша, например, C#? Я все еще смущен. – Adrian

+0

Вы говорите, что реализация моего собственного кеша не рекомендуется из-за сложности, не так ли? – Adrian

+1

Adrian AFAIK C# поддерживает кеш для Asp.Net и MVC. Напротив, Java имеет «ServletContext», поскольку я помню, что работаю с веб-приложением Java, который может быть схожим, но он не является реальным кешем, поскольку его элементы необходимо удалить вручную и не предлагает синхронизацию при добавлении/удалении атрибутов. Кроме того, я действительно не удивляюсь, почему или нет класса Cache в Java. Если вы понимаете, как работает кеш, то вы можете создавать свои, а Java предлагает вам основные элементы для этого. –