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

mybatis / mybatis-3 / #2913

pending completion
#2913

push

github

web-flow
Update dependency org.mybatis:mybatis-parent to v37

9380 of 10743 relevant lines covered (87.31%)

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-2022 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
   * @return The object stored in the cache.
61
   */
62
  Object getObject(Object key);
63

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

81
  /**
82
   * Clears this cache instance.
83
   */
84
  void clear();
85

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

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

104
}
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