我们需要在 Spring Boot 中手动序列化和反序列化 JSON 对象吗?

问题描述 投票:0回答:1

我是一名新的 Java 开发人员,正在从事 ERP 项目。我浏览了项目的代码库,发现了一些有趣且相当复杂的编码结构。

整个应用程序是在纯JPA上开发的,很少使用Spring Boot自己的接口、注解和方法。例如,根本没有使用 JPARepository 接口。 @Repository 是这里的一个类,他们使用 Jackson 数据绑定进行增删改查操作。

例如,这是存储库类,

@Repository
public Response save(String empRegistration) {

        JSONObject json = new JSONObject(empRegistration); // from android library
        String empReg= Def.getString(json, "empReg");
        EmpRegistration empRegistration = new EmpRegistration ();
        empRegistration = objectMapperReadValue(empReg, EmpRegistration.class);
                
                Response response = baseOnlySave(EmpRegistration); // baseOnlySave is the base save method              written in pure JPA.
                return response;
}

这是objectMapperReadValue方法


default <T> T objectMapperReadValue(String content, Class<T> valueType) {
            ObjectMapper objectMapper = new ObjectMapper();
                
        try {

            return objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).readValue(content,
                    valueType);

        } catch (JsonParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        } catch (JsonMappingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }
        // return null;
    }

我基本上会做什么

Public Response save (Employee emp) { empRepository.save(emp); return response;}

所以,我的问题是,在 Spring Boot 中开发企业应用程序时,我们真的需要使用 JSONObject 和 objectMapper 类来保存对象吗?

java spring spring-boot jackson
1个回答
0
投票

可以使用

JSONObject
ObjectMapper
进行 CRUD 操作,尽管它通常被认为是效率较低且不易维护的方法,特别是在抽象、类型安全、可扩展性、性能和可维护性是关键问题的企业应用程序中。

您可能需要重新考虑该方法,因为在 Spring Boot 应用程序中直接使用 JSONObject 和 ObjectMapper 进行 CRUD 操作并不常见,尤其是当您可以访问

Spring Data JPA
和 Spring Boot 自动配置提供的强大功能时。

就您而言,重构代码以使用

Spring Data JPA
存储库并遵循 Spring Boot 的约定从长远来看可能会导致更干净、更高效且更可维护的代码。但是,在进行任何更改之前,您应该仔细评估项目的要求和限制。

© www.soinside.com 2019 - 2024. All rights reserved.