JPA中配置实体类与表的对应关系以及配置表之间的关系都是用注解的方式来完成的。原来hibernate是用xml的方式来配置的,后来hibernate自身也带注解的功能了,所以即使不用jpa,hibernate也是能使用注解功能的,其实你可以发现使用注解功能是所引用的那个jar包,就在hibernate开发包中requied文件夹下,所以你不使用jpa去写不导jpa的jar包,注解功能也能照常用。
关于是使用hibernate还是使用JPA?能不能混合用的问题:
1、从配置persistence.xml到使用注解配置映射,然后方法全用jpa提供的,全程用jpa的那一套。
2、从配置hibernate.cfg.xml到使用hbm.xml配置映射,然后方法全用hibernate自己那一套。
3、配置使用hibernate.cfg.xml,使用注解配置映射关系,然后方法照样用hibernate的。
4、主配置文件是persistence.xml,映射也是使用jpa注解,但是通过EntityManager获取到session后,通过hibernate的方法操作。
等等。。。。。。。
所以说,jpa就像是套在hibernate(或其他持久层框架)的套子,将hibernate原来的方法简单封装,比如把save封装成persist,这样不管开发者用的什么持久层框架,只要这个框架支持jpa,我们可以不关心框架到底怎么实现的,我们只要会使用jpa的方法就能驾驭这个持久层框架了!而session和entitymanager则可以看作是里外连接的一个通道,连接他们两者的就是session = entitymanager.unwrap(Session),只要打开了这个通