我正在尝试读取具有这些字段和值的csv文件:
// "reference" "choice", "startDate"
// "123", "3", "06.03.1987"
// "Set 1", "1", "11.06.1999"
// "Set 2", "2", "05.07.2002"
// "Set 3", "", "05.07.2002"
reference
字段唯一,choice
字段可能为空。在这个场景中,对于我的实体定义:
1。我应该使用String
choice
字段,因为它可能是空的(空字符串)在csv文件?
2。我应该让reference
字段PK,或者即使它是唯一的,我认为最好使用Long
id字段,并为reference
字段添加@Column(unique = true)
。对吗?
3。对于startDate
字段,我认为我应该使用LocalDate
,而不是Date
,因为它已被弃用。这是真的吗?
1。我应该使用字符串的选择字段,因为它可能是空(空字符串)在csv文件?
您可以将csv值解析为String
,并在写入数据库之前使用Integer.parseInt()
(因此您可以写入有效数字,或者在csv值不可解析时写入null
)。
2。我是否应该使参考字段PK或即使它是唯一的,我认为最好使用长id字段并为参考字段添加@Column(unique = true)。对吗?
如何选择主键,唯一性是否有意义,如何处理唯一值的重复(新添加失败?添加相关行?更新现有行,覆盖现有值?)。你可以写一整篇文章来讨论这个问题。
3。对于startDate字段,我认为我应该使用LocalDate,而不是Date,因为它已被弃用。这是真的吗?
当然,java.time.LocalDate
是个不错的选择。
有点迂腐,但是:java.util.Date()
上的各种方法已经被弃用了,但Date
本身并没有被弃用。一般来说,java.time
包中有更好的选择(比如LocalDate
)。