将 ehcache 设置为测试代码可读写,生产代码设置为只读

发布于 2024-09-01 11:45:49 字数 385 浏览 5 评论 0原文

我想注释许多包含引用数据和/或配置数据的 Hibernate 实体,

@Cache(usage = CacheConcurrencyStrategy.READ_ONLY)

但是,我的 JUnit 测试正在使用 Hibernate 实体设置和拆除一些引用/配置数据。 是否有推荐的方法让实体在测试设置和拆卸期间可读写,但对于生产代码为只读?

我对非理想解决方法的直接想法是:

  • 使用 NONSTRICT_READ_WRITE,但我不确定隐藏的缺点是什么。
  • 在我的测试代码中创建子类实体以覆盖只读缓存注释。

关于处理这个问题的最干净的方法有什么建议吗?

(注:项目使用maven。)

I would like to annotate many of my Hibernate entities that contain reference data and/or configuration data with

@Cache(usage = CacheConcurrencyStrategy.READ_ONLY)

However, my JUnit tests are setting up and tearing down some of this reference/configuration data using the Hibernate entities.
Is there a recommended way of having entities be read-write during test setup and teardown but read-only for production code?

Two of my immediate thoughts for non-ideal workarounds are:

  • Using NONSTRICT_READ_WRITE, but I am not sure what the hidden downsides are.
  • Creating subclassed entities in my test code to override the read-only cache annotation.

Any recommendations on the cleanest way to handle this?

(Note: Project uses maven.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

死开点丶别碍眼 2024-09-08 11:45:49

回答我自己的问题:

使用 NON_STRICT_READ_WRITE 是一个合理的解决方案,它具有 READ_ONLY 的大部分优点,但允许您的测试代码插入和更新实体。

请记住在测试设置期间逐出所有缓存的项目,以确保您不会读取过时的测试数据。 (例如evictQueries())。

Answering my own question:

Using NON_STRICT_READ_WRITE is a reasonable solution that has most of the benefits of READ_ONLY, but allows your test code to insert and update entities.

Remember to evict any cached items during test setup to ensure you aren't reading stale test data. (e.g. evictQueries()).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文