今天本想偷个懒,因不想变动数据库的数据结构,便把一个临时字段和一个已有字段用拼接的方式保存在实体类的数据中(eg:原数据{code:"123"}想多存一个{vCode:"456"},但数据库中无对应字段,于是就有了{code:"123-456"}),然后通过拆分的方式获取数据中的vCode;
结果后续的查询结果全都变成了{code:"123-456"},一看数据库中code的值还是123没有变化!!!
这正是JPA的一级缓存导致的-。-!
jpa缓存机制
JPA缓存机制是指在使用Java Persistence API(JPA)进行数据持久化操作时,系统会自动缓存一部分数据,以提高系统的性能和响应速度。在JPA中,缓存机制分为一级缓存和二级缓存两种。
一级缓存是指在同一个EntityManager中,对同一个实体进行多次查询时,JPA会自动将第一次查询的结果缓存起来,以便后续查询时直接从缓存中获取数据,而不需要再次查询数据库。这种缓存机制可以有效地减少数据库的访问次数,提高系统的性能和响应速度。
二级缓存是指在多个EntityManager之间共享的缓存,可以缓存多个实体的数据。在JPA中,可以使用第三方缓存框架(如Ehcache、Redis等)来实现二级缓存。通过使用二级缓存,可以进一步减少数据库的访问次数,提高系统的性能...