Java 一周中的多天建模
这是我第二次考虑对象和工作日之间的一对多关系,我不确定是否以最佳方式对其建模:Java 一周中的多天建模,java,date,dayofweek,Java,Date,Dayofweek,这是我第二次考虑对象和工作日之间的一对多关系,我不确定是否以最佳方式对其建模: @Entity MyObject { private int id; private String foo; private boolean monday; private boolean tuesday; private boolean wednesday; private boolean thursday; private boolean friday;
@Entity
MyObject {
private int id;
private String foo;
private boolean monday;
private boolean tuesday;
private boolean wednesday;
private boolean thursday;
private boolean friday;
private boolean saturday;
private boolean sunday;
}
有没有人找到更好的方法
我的要求是从数据库中检索与一周中的当前日期匹配的
MyObject
的所有实例,即不需要检查多个日期,例如mon=1&&tues=1当对集合中的有限个项目建模时,通常最好使用
您可以在课堂上这样使用:
class YourClass {
private Set<DayOfWeek> activeDays;
public void addActiveDay(DayOfWeek day){
activeDays.add(day);
}
}
...
yourclass.addActiveDay(DayOfWeek.Friday);
classyourclass{
私人活动日;
公共作废addActiveDay(DayOfWeek日){
添加(天);
}
}
...
yourclass.addActiveDay(星期五,星期五);
如何创建一周中的天数枚举,然后使用一个专用数组存储适用的天数?如果你想变得有趣,你可以有一些结构(比如一个集合
,我认为它不允许重复),而不是一个防止重复的数组
如果您也在数据库中使用它,那么您运行什么样的查询来获取数据,以及您使用什么样的表结构(枚举解决方案可能不适用于所有数据库)如:
MyObject{Set activeWeekdays}
?看起来数据库的开销要大得多?要加入的额外表,可能是7 varchar(9)。@James,你可能是对的。这不会比用整数表示天数更好。然而,通常最好的做法是先设计好代码,然后再考虑优化。你不能确定使用枚举会太慢。我会将Mysql/InnoDb与一个表MyObjects(ID:int,FOO:varchar,星期一:bit,星期二:bit…星期天:bit)
一起使用,然后查询例如where MONDAY=1
@James:Mysql有枚举,它们看起来确实与Java兼容(尽管我自己没有尝试过):…尽管这需要修改现有的表和查询。
class YourClass {
private Set<DayOfWeek> activeDays;
public void addActiveDay(DayOfWeek day){
activeDays.add(day);
}
}
...
yourclass.addActiveDay(DayOfWeek.Friday);