1. 数据库表的设计
-
关于冗余信息
首先,尽量满足三范式,但可以添加一些冗余,来减少连表查询等,提高数据库性能。添加冗余字段一定要谨慎,一般一张表不要多余一个,毕竟冗余信息也是需要维护的,这将增加开发的复杂性。
-
关于外键约束
添加了外键约束,在插入数据时就要进行检查,可也会消耗性能,所以开发时可以添加外键约束,但最终的表一定是不加约束的,唯一约束也是同理。
2. 实体类设计
-
关于日期类型
java中对应的日期类型可以为,
java.sql.Date``````java.util.Date或者String类型都可以,DbUtils都可以自动转换。我还是比较喜欢java.util.Date -
关于多表关系
多对多的关系需要引入中间表,那么每张表与中间表就都是一对多的关系了。
对于一对多关系,多的一方中有外键 指向 一的一方 的主键。
在实体类中:
多的一方 除了外键以外,通常或存储一个外键对应类型的实体。这样在使用时就可以方便的获取到所需的信息。在对应的DAO类中,首先查询本表获得本表数据,然后那这获取到的外键,调用外键对应类型DAO的方法获取外键对象。【特别注意,这里不要使用连表查询,链表查询过于消耗性能】
一的一方 一般会有多个 多的一方指向它,这些信息也需要存储,一般创建一个额外的对应类型的List存储,在DAO会通过多次查询,获取所有数据。
这样设计也许会造成空间浪费,性能下降,但是这样设计,服务层就完全不需要考虑数据的获取问题,服务层面向的就是一堆的实体类,用什么信息get就完事儿了。分层明确,结构清晰。对于复杂系统来说,这或许比性能更重要吧。
个人感悟:
不要一味地追求内存最小,新能最佳。这确实很重要,但过于追求极致,可能会使程序的结构比较混乱。其实若要追求性能,何不使用C语言呢?要学会权衡利弊,有舍有得,不可追求片面的极致。
总的来说,复杂系统中,系统的结构以优先级最高的,要在结构良好的基础上,再考虑优化问题。
3. DAO设计
一般DAO中都会包括 增、删、改、查,以及一些复杂的条件查询。
1025




被折叠的 条评论
为什么被折叠?



