假设原来没有使用hibernate的情况下,在一个设备管理系统,每个设备都有一个所属的部门。在设备记录表中都是用部门编号来替代。有一张专门的部门表,里面包含部门编号和部门名称。请问:1,在页面中,要是显示设备详情的话,是不是每个设备的部门编号都要去数据库查一下部门表?(因为设备表中只有部门编号没有部门名称, 要显示部门名称)。这样如果很多条记录的话,有没有什么优化的方法呢?2,使用hibernate的话,来设计面向对象的数据库,表结构之类的是否需要改变呢?做映射的时候,设备表中是不是添加一个部门表的外键,也就是部门编号就OK了?用到时再去部门表中查询部门名称?
设备表: 设备编号 设备名称 部门编号
部门表: 部门编号 部门名称用SSH结构写的话,往页面传递的设备list中,是部门编号还是部门名称啊?感觉应该是部门编号。那就是要在页面中再查询?会不会显得高耦合啊?
应该是设备表、部门表、设备部门中间表假如按你的结构来做的话,直接把部门对象传递过去,在设备表中建立Many-to-one的关系,并把它映射为DepID,这样在保存时,直接就把编号DepID保存了
那因为一个设备只属于一个部门,是不是不需要中间表啊?
设备表: 设备编号 设备名称 部门编号
部门表: 部门编号 部门名称 为了显示设备的详细信息,原来的做法是,传递到页面上:list<设备>,设备包含设备编号,设备名称,部门编号。然后在页面上调用方法(这是一个提取出来的共通方法,因为类似情况很多),根据部门编号查询部门名称并显示出来的。PS:共同方法: return:目标字段的值(部门名称的具体值)
arguments: 表名(部门表),目标字段(部门名称),参数字段(部门编号),
参数值(部门编号的具体值)现在改用SSH架构时,传递到页面什么内容,是否还是在页面查询
棒棒 另外如果有特殊查询的话 我建议LZ用@Formula(XML配置文件的方式我忘了)
具体LZ可以搜索下这个 当只需要查询一个属性而不需要查询整个实体的时候 这个东西还是比较有用的
在查询设备的时候会将部门也查询出来
将部门对象set到设备javabean中