一个业务要用到几个DAO对象,但是数据库设计中没有外键,无法关联,现在我想手工关联,不知道应该如何写,不管是session还是其他的办法,只要实现了就可以。谢谢各位大侠,小弟在此答谢了。

解决方案 »

  1.   

    jdbc 设置2表之间有ID关联 
    inner join 
    ...
      

  2.   

       dao和session(应该指的是hibernate的吧)是没有关系的!当你把某个dao实现后,我们用dao不会管他是由hibernate or jdbc or jdbctemplate(Spring)的,只管拿来用就OK了。
       主外键的目的是什么 ?在我看来就是为了数据的合法性,比如一个身份证没有对应的人!那这个身份证就没有意义,就是不合法啦!
    我们那身份证和人举列子,人可以没有身份证(小屁孩),但是身份证必须有对应的人。所以当你删除这个人时,你必须把与之对应的身份证也删了。
    那么就很简单啦,
             personDao.delete(person);
            cardDao.deleteCardbyPersonId(person.getId());
    写到一个事务里!
      
      

  3.   

    hql语句直接关联就可以了或者用原生sql关联查询
      

  4.   

    通过Hibernate的Session对象是可以得到Connection的。
    具体我忘记了,大概的样子是: session.getCurrentSession().getConnection();
    得到了Connection后就可以直接的执行SQL了。
    类似于:
    String sql = "selelct a.a1,a,a2,b.b1,b.b2 from a,b where a.id=b.id";
    conn.createStatment().executeQuery(sql);
      

  5.   

    那我如何保证我的session是一个session呢??
      

  6.   

    很久没有用Hibernate了,我记得Hibernate可以从配置文件中设置主外键关联的,
    而且还可以设置是否级联删除,LZ自己查一下,应该可以解决的。
    使用的时候,也就是几个相关的对象操作,封装的一个事务里就可以了。
      

  7.   

    session是一个事务,当你开启一个事务后,你可以进行多个crud操作,跟dao没关系,然后再提交事务。