本人最近遇到几个问题需要高手帮忙解决一下!!1、什么是非线程安全?2、在hibernate中session.flush()这个方法是干嘛用的?3、在sql语句中左连接和有连接有什么区别?4、在java中Ajax的原理是什么?
谢谢各位了...

解决方案 »

  1.   

    1、多个线程并发对一个资源进行读取和修改
    2、session.flush();刷新,从数据库取出最新的数据
    3、左连接表示,左边表的数据关联字段可以对应右边关联表的字段值为NULL
    4、AJAX页面无刷新,内部实现XMLHttpRequest对象
      

  2.   

    1 问题太多了!
    2 分数太少了!
    3 我看着都累了回答一个吧!
    左连接,就是只有左侧有数据,右侧才有数据,比如不是每个人都有儿女。 left join 子女信息
    右连接,就是右侧的一定有数据,比如查询所有有儿女的人。 right join 子女信息
      

  3.   

    Hibernate尽量延迟向数据库发送sql,它自己有一个缓冲区,先把sql放在里面,最后一起发送,减少网络开销和数据库开销
    flush就是把sql缓冲区的sql语句发送到数据库去
    flush不必显示调用,事务提交时会自动调用该方法
      

  4.   

    1、多个线程同步访问同一个资源进行修改
    2、session.flush()对session缓存进行清理,同步数据库进行持久化,发出相应的
        sql语句,如果数据库的事务隔离级别是可未提交读的话,就可以在数据库看到数据
    3、左连接要把左边的表的行全部列出,所以右表的属性可能为空,右连接相反
    4、Ajax最简单的讲,不刷新页面和数据库交互