下面列出了怎么用org.hibernate.annotations.CacheConcurrencyStrategy的API类实例代码及写法,或者点击链接到github查看源代码。
public static void init() {
Map<String, Object> props = new HashMap<String, Object>();
props.put(AvailableSettings.USE_SECOND_LEVEL_CACHE, true);
props.put(AvailableSettings.USE_QUERY_CACHE, true);
props.put(AvailableSettings.DEFAULT_CACHE_CONCURRENCY_STRATEGY, CacheConcurrencyStrategy.NONSTRICT_READ_WRITE);
props.put(AvailableSettings.CACHE_REGION_FACTORY, Hibernate4MemcachedRegionFactory.class.getName());
props.put(AvailableSettings.CACHE_REGION_PREFIX, "cachetest");
props.put(AvailableSettings.CACHE_PROVIDER_CONFIG, "META-INF/h4m-properties.xml");
props.put(AvailableSettings.HBM2DDL_AUTO, "create");
props.put(AvailableSettings.USE_STRUCTURED_CACHE, "false");
props.put(Hibernate4MemcachedRegionFactory.MEMCACHED_ADAPTER_CLASS_PROPERTY_KEY,
SpyMemcachedAdapter.class.getName());
props.put(SpyMemcachedAdapter.HOST_PROPERTY_KEY, "localhost:11211");
props.put(SpyMemcachedAdapter.HASH_ALGORITHM_PROPERTY_KEY, DefaultHashAlgorithm.KETAMA_HASH.name());
props.put(SpyMemcachedAdapter.OPERATION_TIMEOUT_MILLIS_PROPERTY_KEY, "5000");
props.put(SpyMemcachedAdapter.TRANSCODER_PROPERTY_KEY, KryoTranscoder.class.getName());
props.put(SpyMemcachedAdapter.CACHE_KEY_PREFIX_PROPERTY_KEY, "h4m");
props.put(KryoTranscoder.COMPRESSION_THREASHOLD_PROPERTY_KEY, "20000");
emf = Persistence.createEntityManagerFactory("cachetest", props);
}
@OneToMany
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public List<Pokemon> getPokemons() {
return pokemons;
}
private static String resolveCacheConcurrencyStrategy(CacheConcurrencyStrategy strategy) {
final org.hibernate.cache.spi.access.AccessType accessType = strategy.toAccessType();
return accessType == null ? null : accessType.getExternalName();
}
private LocalCacheAnnotationStub(String region, CacheConcurrencyStrategy usage) {
this.region = region;
this.usage = usage;
}
public CacheConcurrencyStrategy usage() {
return usage;
}
private static CacheConcurrencyStrategy determineCacheConcurrencyStrategy(MetadataBuildingContext context) {
return CacheConcurrencyStrategy.fromAccessType(
context.getBuildingOptions().getImplicitCacheAccessType()
);
}
public static String getCacheConcurrencyStrategy(CacheConcurrencyStrategy strategy) {
org.hibernate.cache.spi.access.AccessType accessType = strategy.toAccessType();
return accessType == null ? null : accessType.getExternalName();
}
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "userId", nullable = false)
public Login getLogin() {
return this.login;
}
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "roleId", nullable = false)
public Role getRole() {
return this.role;
}
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
@OneToOne(fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn
public CustomerAccount getCustomerAccount() {
return this.customerAccount;
}
@ManyToMany
@JoinTable(name = "users_roles")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public Set<Role> getRoles() {
return roles;
}
@CollectionOfElements
@JoinTable(name = "roles_permissions")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public Set<String> getPermissions() {
return permissions;
}