我想在我的后端代码中使用 Scala Slick,并且我还需要支持需要将我的域模型公开为普通 Java POJO 的遗留 Web 服务 API。
除了编写手动映射代码之外,是否有一些不错的对象映射器库或其他解决方案来完成这项任务?我以前使用过 Orika 对象映射器(仅在 Java 中),它具有一些不错的功能,例如默认映射具有相同名称的属性,能够按类型提供自定义映射器。
听起来用注释你的 Scala 对象@BeanProperty
会很有帮助。
这很酷;只需将@BeanProperty 标记添加到您的类字段,就会自动为您生成get 和set(getter 和setter)JavaBean 方法。
我不相信它会处理 Java/Scala 集合之间的转换(例如,在它们的Map
/List
等相关概念之间),但它本身会实现一些集合的复制,这本身可能并不直观。
您可以使用可扩展的 Slick 代码生成器生成到现有类而不是新案例类的映射。您可能想要enable = false
代码生成器的一些内部类并覆盖 EntityType 以生成简单的工厂而不是案例类。请参阅http://slick.typesafe.com/doc/2.0.2/code-generation.html
我将在 Scala Days 2014 上讨论代码生成器,这可能也有助于解决这个问题。
另一种选择是使用ModelMapper及其ValueReader SPI。虽然没有与 Slick 的开箱即用集成,但jOOQ 集成文档和实现可以让您了解将某些数据模型通用映射到 POJO 是多么容易。