1:hibernate与ejb有啥区别?
2:函数与存储过程有啥区别?
3:在高并发的条件下,如何用jdbc获得自己插入的最后一条数据的id,id自增长.

解决方案 »

  1.   

    1、hibernate 用来做持久层 pojo到数据库映射的,
       EJB   用来做持久层 pojo到数据库映射和处理业务逻辑,重量级的
    2、我感觉区别不大...
    3、不知道,获取最大的id号应该可行
      

  2.   

    1.EJB标准的当前版本没有提供ORM机制。但是,这种情况即将改变。下一版EJB标准(3.0)已经作为JSR(Java Specification Request)220开发出来了,其中包含EJB ORM标准。既然刚发布了Sun所支持的新标准,现在为什么要学习Hibernate呢?因为Hibernate最初的开发者们参与了标准的制定,而且作为最成功的ORM解决方案之一,Hibernate在很大程度上影响了EJB 3.0的设计。Hibernate将支持EJB 3.0中与ORM相关的部分。
    EJB 3.0支持并鼓励对实体bean使用透明的持久化,而实体bean符合Hibernate对POJO的基本要求。因此,可以使用Hibernate作为EJB容器的EntityManager组件实现。
    Hibernate的HQL(Hibernate Query Language)也与新的EJB QL(EJB Query Language)有密切的联系,这是因为这两种语言都源自SQL(Structured Query Language),而且Hibernate团队参与了EJB标准的制定。
    EJB 3.0允许使用Hibernate支持的注解来描述实体/POJO与数据库之间的关系,由于这种方式非常简便,随着Java 5的普及,它将成为维护这些映射的标准方式。
    Hibernate 3提供的特性超过了EJB 3.0标准的要求,而且Hibernate 3不要求使用应用服务器,因此适合那些没有使用完整J2EE栈的Swing应用程序、其他客户端应用程序和轻型Web应用程序(例如,在Tomcat上运行的应用程序)。
    简而言之,如果现在用Hibernate 3编写应用程序,那么以后如果需要迁移到EJB 3.0,就可以很轻松地完成。目前,Hibernate 3已经可用了,而且具有优良的品质.2.存储过程需要单独执行;  
      函数可以随处调用。  
       
      存储过程是保存起来的可以接受和返回用户提供的参数的   Transact-SQL   语句的集合。  
      可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。  
      也可以创建在   Microsoft®   SQL   Server™   启动时自动运行的存储过程。  
       
      用户定义函数,它是返回值的已保存的   Transact-SQL   例程。用户定义函数不能用于执行一组修改全局数据库状态的操作。  
      与系统函数一样,用户定义函数可以从查询中唤醒调用。也可以像存储过程一样,通过   EXECUTE   语句执行。   3.锁