Я тоже не уверен, но я также предполагаю, что ENABLE_SELECTIVE уже по умолчанию, потому что с @Cacheable
вы как-то активируете его выборочно.
Однако, используя загрузку пружины в соответствии с ответом на Spring Boot + JPA2 + Hibernate - enable second level cache кажется, что вы можете повлиять на режим кэширования с помощью application.properties (файл конфигурации рессоры ботинка) с записью, как это:
spring.jpa.properties.javax.persistence.sharedCache.mode=ENABLE_SELECTIVE
Может быть, вы можете передать это в мир XML и использовать свойство, как это в JPA конфигурации весной файла XML:
<bean id="myEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="com.example.persistence.model" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">create-drop</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="javax.persistence.sharedCache.mode">ENABLE_SELECTIVE</prop>
</props>
</property>
</bean>
Я не проверял, но ИМО это правильный путь.
Насколько я помню, при использовании чистого Hibernate поведение по умолчанию заключается в том, чтобы кэшировать эти объекты/коллекции с помощью '@ Cacheable'. Какие у вас проблемы? –
Я искал, что хочу включить кеш выборочно. Можно ли настроить другие режимы из файла конфигурации hibernate? – Nimesh
AFAIK, повторю, я думаю, что Hibernate уже позволяет кэши выборочно из коробки при запуске Hibernate native. Я не знаю других вариантов в hibernate.cfg.xml –