Классы данных Kotlin обеспечивают уровень краткости и эффективности, которого вы не можете получить с помощью POJO. Я использую этот шаблон, который вы ищете экстенсивно в моих проектах на работе.
И, да, они похожи на это. Однако в вашем коде есть некоторые недостатки, которые можно легко обойти. Например, нет смысла в аннотациях обнуляемости, когда язык встроен.
Вот один из моих классов проекта, как пример реального использования:
@Entity
@Table(name = "Acks")
data class AckEntity(
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Int = 0,
@Enumerated(EnumType.STRING)
val ackType: AckType,
@OneToOne(cascade = [CascadeType.ALL], fetch = FetchType.EAGER)
@JoinColumn(name = "alert")
val alert: AlertEntity,
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn
val session: SessionEntity? = null,
@Embedded
val sale: SaleEntity?,
val version: Int,
val timestamp: Date?) : DataEntity
По сравнению с тем, как эти классы выглядели в Java, я бы сказал, что это более чистый подход.
Однако может потребоваться некоторое время, чтобы привыкнуть к тому, как Котлин делает вещи. Однако, как только вы научитесь быстро читать язык, вы заметите, что ваша эффективность немного повысится. Я знаю, что сделал.