作者回复: 抱歉,这里Keynote的一对多应该是多对多,应该是n而不是1,图上标的不对,我联系极客时间的同学修改下视频中的Keynote。感谢反馈。
作者回复: 多谢分享。
作者回复: 金额不止是一个小数,它还有货币单位之类的东西,复杂的还有货币转换,各种汇率之类的问题。用Money类型可以明确地表示我这个属性是个货币,也更容易区分。
作者回复: 就是这么转换的,枚举转成int,一直都这么用,好像我还真没想过为什么
作者回复: JPA是要求实体要有ID的,不过也有绕过的办法,比如用复合主键IdClass,或者参考下这里给出的常见解决方案 https://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#No_Primary_Key
作者回复: 建议用整数来存储,精确到分,也就是minorAmount。也可以精确到厘,这时就只能自己来处理转换了。
作者回复: 简单的东西就用JPA吧。一旦东西复杂了,两者的区别就不大了,而且一般大厂都希望对SQL的控制粒度更细一点,所以都选MyBatis,建议别裸用,结合些工具更好
作者回复: 抱歉,不会,之前没有把它纳入进来。
作者回复: 比如精度、货币转换、单位等等的,还是建议用Money类,不要用Double
作者回复: 1. 是用来本地做测试用的,区分环境我们一般都是用Maven和Spring的profile,这个在讲Spring Boot的配置文件时我们会讲到不同profile的配置文件如何使用。
2. 产线都是实现建的,你也可以用一些类似Flyway的工具来帮助进行数据表的维护,但正常情况下这活都是DBA提前搞好的,不会等着让Hibernate在启动时干这些的。
如果是测试,就是想让它建,Hibernate的建表语句是它根据Dialect自己处理的,你不用操心具体的语法。
作者回复: 可以看看Hibernate的@Inheritance注解,@Inheritance(strategy = InheritanceType.JOINED),子类上再加上@PrimaryKeyJoinColumn。具体的请自行搜索一下。
作者回复: 不是插的时间不对,而是JSON序列化输出时的时区不对,后面的例子里会有指定格式化TimeZone的例子的
作者回复: 可以关注课程大纲哈,18不就是么
作者回复: 你可以搜索以下关键字“hibernate hbm2ddl 顺序”。所以我才说,产线上不要用这种方式。
作者回复: 自增ID基于序列或者数据库本身的主键生成机制,数值类型就OK了,uuid字符型比较长,作为索引,在大了后索引性能可能不如前者,我自己用的比较多的还是前者,不过话说回来,一般我们在做主键时还是会带点业务含义在里面,比如前面带上日期,后面拼一个序列值。但到了分库分表的时候,一张逻辑的表,背后其实一堆物理的表,再用序列或者自增主键就不太合适了,这时需要分布式序列号生成器,然后代码里为记录设置主键。
作者回复: PlantUML