jpa和hibernate
来源:互联网 发布:百度时序数据库 编辑:程序博客网 时间:2024/06/06 02:35
1. Hibernate
JPA是需要Provider来实现其功能的,Hibernate就是JPA Provider中很强的一个。从功能上来说,JPA现在就是Hibernate功能的一个子集。Hibernate 从3.2开始,就开始兼容JPA。Hibernate3.2获得了Sun TCK的 JPA(Java Persistence API) 兼容认证。
例如:
(1)实体对象的状态,在Hibernate有自由、持久、游离三种,JPA里有new,managed,detached,removed,而这些状态都是一一对应的。
(2)flush方法,都是对应的,
(3)Query query = manager.createQuery(sql),它在Hibernate里写法上是session,而在JPA中变成了 manager
2. JPA和Hibernate之间的关系,可以简单的理解为JPA是标准接口,Hibernate是实现。
那么Hibernate是如何实现与JPA 的这种关系的呢?
Hibernate主要是通过三个组件来实现的,及hibernate-annotation、hibernate-entitymanager和hibernate-core。
(1)hibernate-annotation是Hibernate支持annotation方式配置的基础,它包括了标准的JPA annotation以及 Hibernate自身特殊功能的annotation。
(2)hibernate-core是Hibernate的核心实现,提供了Hibernate所有的核心功能。
(3)hibernate-entitymanager实现了标准的JPA,可以把它看成hibernate-core和JPA之间的适配器,它并不直接提供ORM的功能,而是对hibernate-core进行封装,使得Hibernate符合JPA的规范。
总的来说,JPA是规范,Hibernate是框架,JPA是持久化规范,而Hibernate实现了JPA。
hibernate-entitymanager是为了提供jpa中所需要的entitymanager,现已将hibernate-entitymanager整合进hibernate-core
3.使用hibernate和jpa进行整合时,jap所必须的文件persistence.xml可以省略,而在org.springframework.orm.hibernate5.LocalSessionFactoryBean中进行实体类映射配置。具体如下
<bean id="sessionFactory"class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><property name="configLocation" value="classpath:hibernate.cfg.xml"></property><property name="packagesToScan"><list><value>com.bochuang.entities</value></list></property></bean>
hibernate-entitymanager整合进hibernate-core之前jpa由entitymanager管理,现在由hibernate的session管理
3.两者的整合,其实就可以看成是hibernate集成了jpa,所以配置文件同hibernate 单独使用的配置文件,不用persistence.xml。而在dao层中,既能使用hibernate原有的查询方法,也可以使用hibernate实现了jpa规范的方法.其实现的jpa规范的方法和原有查询方法是并列的
4.实体类的@注解是jpa推出的
- JPA 和hibernate-jpa-api
- JPA和Hibernate注解
- hibernate 和jpa
- Jpa和Hibernate
- JPA和Hibernate浅析
- jpa和hibernate
- JPA和hibernate关系
- hibernate和jpa注意
- jpa 和hibernate 关系
- 原生Hibernate和Jpa Hibernate
- spring data jpa和hibernate jpa
- 混合使用JPA和Hibernate
- JPA和Hibernate的关系
- JPA和Hibernate的关系
- JPA和Hibernate的区别
- JPA和Hibernate的区别
- JPA和Hibernate的关系
- JPA和Hibernate的区别
- 第一次
- 第十五章上机练习3
- [JS]JS对象的内部原型(__proto__)和构造器的原型(prototype)
- 手机测试环境调试 -- 微信,Android,IOS开发使用Fiddler代理
- ios应用开发--判断用户是否已经登录
- jpa和hibernate
- 每个ios开发者都应该知道Top 10 Swift三方库
- const char*转换成wstring类型
- 第十五章上机练习4
- PHP多线程模拟秒杀抢单
- tomcat 多域名配置
- 组策略 gpedit.msc 出错解决
- caffe for windows 训练cifar10
- bit程序设计 括号序列 栈+前缀和