EJB的Entity的性能不好已经成为一个不争的事实,很多的开发者已经开始采用sessionBean+Hibernate的架构模式,最近查了很多的资料,通常的做发是将Hibernate部署在服务器中,然后通过sessionBean的sessionFactory.lookup方法进行查找,我不知道其他人是否遇到了这样的问题,我在绑顶sessionFactory的时候,如果这样绑定java:/hibernate/SessionFactory那么在调用查询的时候责会抛出hibernate not bound的异常,如果是这样hibernate/SessionFactory绑定JNDI的时候,那么查询的时候在getSession()时会出现NullPointException异常.
     既然hibernate作为轻量级框架引入,并且hibernate本身就和容器没有关系,那么有什么必要去将hibernate绑定到服务器上呢?如果那样,在交换平台的时候会不会出现很多的不便利?
     JNDI的好处无人质疑,既然开发者采用sessionFactory+hibernate的开发模式,我觉得完全可以将dao层交付给hibernate管理,接下来就是dao层的设计,一般采用贫血模式设计,然后使用@EJB注入到sessionBean中,这样只使用sessionFactory的强大的功能即可,而dao层可以很轻松的回到所熟悉的hibernate模式,如果有必要,采用rich模式设计dao层也非不可.
    这样的设计,完全可以不使用EJB的persistance.
    下面是代码