在编写服务时,我们通常倾向于将数据对象 (ORM) 和服务对象(编组为 JSON/XML 等的对象)分开,并最终编写一个将数据对象作为输入并生成的转换器服务对象。转换器除了使用 getter 从数据对象中获取数据并将其中的一些设置到服务对象中之外什么都不做。
我希望大多数人都能参与到这个过程中。我想知道JDK是否有什么可以优化这个场景的。
我更多地考虑 jvm 在系统级别执行它的优化数组副本。
在编写服务时,我们通常倾向于将数据对象 (ORM) 和服务对象(编组为 JSON/XML 等的对象)分开,并最终编写一个将数据对象作为输入并生成的转换器服务对象。转换器除了使用 getter 从数据对象中获取数据并将其中的一些设置到服务对象中之外什么都不做。
我希望大多数人都能参与到这个过程中。我想知道JDK是否有什么可以优化这个场景的。
我更多地考虑 jvm 在系统级别执行它的优化数组副本。
您所说的“数据对象”通常称为“实体”。您所说的“服务对象”通常称为“数据传输对象”(“DTO”)。
这两个是 Java 对象,就像所有其他 Java 对象一样,JVM 没有任何特定的东西来优化实体到 DTO 的转换。
与执行 SQL 查询和取回实体以及序列化 DTO 以通过网络发送它们的成本相比,这个过程无论如何都非常快。如果你有什么要优化的,那可能不是实体到 DTO 的转换。
您可以使用Serializable
接口,然后使用 读取对象ObjectInputStream
并使用 写入ObjectInputStream
。但是更漂亮的是DataInput/OutputStream
用于序列化。
http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html http://docs.oracle.com/javase/7/docs/api/java/io/DataInputStream.html http://docs.oracle.com/javase/7/docs/api/java/io/DataOutputStream.html http://docs.oracle.com/javase/7/docs/api/java/io/ObjectInputStream.html http://docs.oracle.com/javase/7/docs/api/java/io/ObjectOutputStream.html