gpt4 book ai didi

java - 转换java对象的框架

转载 作者:搜寻专家 更新时间:2023-10-30 21:30:45 25 4
gpt4 key购买 nike

<分区>

我正在从事将数据库实体转换为 DTO 对象的项目。为此,每次转换都使用一个特殊的转换器类。


我正在提供我们正在做的事情的简化示例。为了代码清晰,我故意漏掉了 setter/getter 和其他一些东西。

所以这里是持久实体:

class Car {
String number;
Driver driver;
}

class Driver {
String name;
License license;
}

class License {
String serial;
Date expired;
}

假设我们需要以下 DTO 对象:

class DriverDTO {
String name;
String carNumber;
String licenseSerial;
}

我们创建以下转换器类:

class DriverDTOConverter {
DriverDTO convert(Car car) {
DriverDTO driverDto = new DriverDTO();
driverDto.carNumber = car.number;
driverDto.name = car.driver.name;
driverDto.licenseSerial = car.driver.license.serial;
return driverDto;
}
}

还有一个更复杂的例子:

class CarDTO {
String number;
String driverName;
LicenseDTO driverLicense;
}

class LicenseDTO {
String serial;
}

class CarDTOConverter {
CarDTO convert(Car car) {
CarDTO carDto = new CarDTO();
carDto.number = car.number;
carDto.driverName = car.driver.name;
LicenseDtoConverter c = new LicenseDtoConverter();
carDto.driverLicense = c.convert(car.driver.license);
return carDto;
}
}

class LicenseDtoConverter {
LicenseDTO convert(License license) {
LicenseDTO licenseDto = new LicenseDTO();
licenseDto.serial = license.serial;
return licenseDto;
}
}

这需要很多时间,所以我想知道是否有任何框架可以承担这项工作的责任。我只需要使用属性文件或注释对其进行配置。

就这样

如果由属性文件生成:

DriverDto <--> Car {
carNumber = number;
name = driver.name;
licenseSerial = driver.license.serial;
}

CarDTO <--> Car {
number = number;
driverName = driver.name;
driverLicense = driver.license;
}

LicenseDTO <--> License {
license = license;
}

或可能的注释实体示例

@Converted(Car.class)
class DriverDTO {
@Associated("driver.name")
String name;
@Associated("number")
String carNumber;
@Associated("driver.license.serial")
String licenseSerial;
}

重要的要求是它不应该使用任何反射。所有注释或属性文件都应在编译或预编译阶段编译,并生成字节码或源代码。

如果有人能指出这样的框架,我将非常高兴。如果它仍在开发中,我也很乐意参与它的创建。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com