Я читал о перехватчиках и АОП, как они могут разгладить ваш код и экстернализировать сквозные проблемы в аспектах. Я сразу же подумал о CDI и использовании пользовательских перехватчиков для доступа к кешу каждый раз, когда вы пытаетесь получить доступ к базе данных. Есть ли библиотека, которая уже реализует это и поддерживает memcache? Я думаю, что призывы к сугун-объекту должны быть перехвачены.CDI-перехватчики и memcache
ответ
ИМХО, если вы хотите пойти именно так, вам нужна довольно веская причина, чтобы оправдать, почему Hibernate Cache/JBoss Cache (просто гадать о вашем стеке технологий, но есть продукты/решения практически для всех стеков) не будет подходит вам?
Вы, конечно же, не хотите изобретать колесо с точки зрения разработки собственного кеша запросов или объектов, не так ли?
В общем, использование memcached для непосредственного избежания запросов БД очень сложно получить правильно и неэффективно. Вы действительно хотите кэшировать концепции более высокого уровня, такие как границы DAO -> DTO.
Я использовал AOP для того, чтобы успешно внедрить недействительность кэша и код управления наблюдателем в java-программах. AOP позволяет мне думать о другом наборе повторного использования разных частей моего кода. Это не значит, что мне не нужно проектировать эти аспекты, но это освобождает меня от ограничений и мешает мне вырезать и вставлять и т. Д.
Так что моя рекомендация заключалась бы в разработке этого шаблона доступа, чтобы вы должны выполнять кучу работы на каждой из этих границ, а затем проектировать перекрестные разрезы, которые вводят эту работу во время компиляции.
Дастин, мне немного сложно понять ваше предложение, не могли бы вы рассказать подробнее? Моя первоначальная идея состояла в том, чтобы перехватить вызовы в entitymanager, эти перехватчики проверили, были ли запрошенные объекты уже в кеше, и если они не будут обращаться к базе данных, иначе объекты будут извлекаться из кеша, что делает использование memcache полностью прозрачным , Разве это не очень хорошая идея? – arg20
Кроме того, стоит ли использовать перехватчики? Весь смысл использования кеша - избегать запросов к базе данных, чтобы вы могли достичь большей производительности, но если декораторы/перехватчики добавляют заметные накладные расходы, это усиление будет потрачено впустую. – arg20
Точка кеша не должна избегать запросов к базе данных. Точка кеша - запоминать дорогостоящую работу. Это часто связано с базой данных, но обычно не напрямую результаты запроса к базе данных. - Насколько ваша методология звучит, она может определенно работать, хотя недействительность будет сложнее. См. Ответ jan groth. :) – Dustin
Вы можете попробовать [Припой] (http://seamframework.org/Seam3/Solder) – Shahzeb