• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mybatis / mybatis-3 / #3636

25 May 2024 01:05PM CUT coverage: 87.169%. Remained the same
#3636

Pull #3170

github

web-flow
chore(deps): update dependency maven to v3.9.7
Pull Request #3170: chore(deps): update dependency maven to v3.9.7

3537 of 4285 branches covered (82.54%)

9389 of 10771 relevant lines covered (87.17%)

0.87 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/main/java/org/apache/ibatis/cache/Cache.java
1
/*
2
 *    Copyright 2009-2023 the original author or authors.
3
 *
4
 *    Licensed under the Apache License, Version 2.0 (the "License");
5
 *    you may not use this file except in compliance with the License.
6
 *    You may obtain a copy of the License at
7
 *
8
 *       https://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 *    Unless required by applicable law or agreed to in writing, software
11
 *    distributed under the License is distributed on an "AS IS" BASIS,
12
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 *    See the License for the specific language governing permissions and
14
 *    limitations under the License.
15
 */
16
package org.apache.ibatis.cache;
17

18
import java.util.concurrent.locks.ReadWriteLock;
19

20
/**
21
 * SPI for cache providers.
22
 * <p>
23
 * One instance of cache will be created for each namespace.
24
 * <p>
25
 * The cache implementation must have a constructor that receives the cache id as an String parameter.
26
 * <p>
27
 * MyBatis will pass the namespace as id to the constructor.
28
 *
29
 * <pre>
30
 * public MyCache(final String id) {
31
 *   if (id == null) {
32
 *     throw new IllegalArgumentException("Cache instances require an ID");
33
 *   }
34
 *   this.id = id;
35
 *   initialize();
36
 * }
37
 * </pre>
38
 *
39
 * @author Clinton Begin
40
 */
41

42
public interface Cache {
43

44
  /**
45
   * @return The identifier of this cache
46
   */
47
  String getId();
48

49
  /**
50
   * @param key
51
   *          Can be any object but usually it is a {@link CacheKey}
52
   * @param value
53
   *          The result of a select.
54
   */
55
  void putObject(Object key, Object value);
56

57
  /**
58
   * @param key
59
   *          The key
60
   *
61
   * @return The object stored in the cache.
62
   */
63
  Object getObject(Object key);
64

65
  /**
66
   * As of 3.3.0 this method is only called during a rollback for any previous value that was missing in the cache. This
67
   * lets any blocking cache to release the lock that may have previously put on the key. A blocking cache puts a lock
68
   * when a value is null and releases it when the value is back again. This way other threads will wait for the value
69
   * to be available instead of hitting the database.
70
   *
71
   * @param key
72
   *          The key
73
   *
74
   * @return Not used
75
   */
76
  Object removeObject(Object key);
77

78
  /**
79
   * Clears this cache instance.
80
   */
81
  void clear();
82

83
  /**
84
   * Optional. This method is not called by the core.
85
   *
86
   * @return The number of elements stored in the cache (not its capacity).
87
   */
88
  int getSize();
89

90
  /**
91
   * Optional. As of 3.2.6 this method is no longer called by the core.
92
   * <p>
93
   * Any locking needed by the cache must be provided internally by the cache provider.
94
   *
95
   * @return A ReadWriteLock
96
   */
97
  default ReadWriteLock getReadWriteLock() {
98
    return null;
×
99
  }
100

101
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc