JPA和Hibernate的一些概念

一、关于JPA

JPA是Hibernate的一个抽象或者可以理解为接口,JPA本质上是一种ROM规范


选择什么样的服务器基本上决定了使用那个JPA实现

JBOSS使用hibernate

weblogic是用OpenJPA

Oracle是用TopLink

JPA是各种ORM框架真子集,只提供其中最好的功能。方便移植。


二、关于Hibernate

持久化:保存在内存中的数据称为瞬时状态,保存在硬盘上的数据,称为持久状态。持久化是在瞬时状态和持久状态之间转换的机制。

JDBC的操作是“瞬时”的,变量的值无法与数据库中的值保持一致。Hibernate操作的数据是持久化的,即持久化对象的数据属性的值可以跟数据库中的值保持一致。

ORM:对象关系映射,完成对数据到关系型数据映射的机制叫对象关系映射。

Hibernate支持缓存、延迟加载、预先抓取、级联

延迟加载:比如每一个Order对象中含有一个Item集合,延迟加载可以在select时只获取关注的Order属性,而不必加载Item集合,从而提升了效率。

预先抓取:与延迟加载是相对的。可以在select Order时,同时获得Item集合,从而避免了多次查询。

级联:当删除Order时可以同时删除Item

1.Hibernate的七个步骤



SessionFactory的创建和销毁需要耗费大量资源,一般一个应用只创建一个。保存着与数据库映射的所有信息,也是创建Session的工厂。

Session相当于JDBC的connection.是持久化操作的核心。

Transation功能上跟数据库中事务完全一样,由Session创建。

如果不进行更改操作,可以不用创建事务。

三、JPA的Join操作

首先要有一个一对多和多对一的映射



具体的Hql实现:

	public List<News> getNewsListByUserId(int id) {
		// TODO Auto-generated method stub
		List<News> newsList=new ArrayList<News>();
		String Hql="SELECT news from News news "
				+ "JOIN FETCH news.user u where u.id=?";
		Session session=this.getSession();
		newsList=session.createQuery(Hql).setInteger(0, id).list();
		session.close();
		//session.getTransaction().commit();
		return newsList;
	}





JPA(Java Persistence API)和Hibernate是两种在Java平台上用于对象关系映射(ORM)的技术。 JPA是Java EE规范中定义的一套ORM接口,它为开发人员提供了一种标准的方式来访问持久化数据。而Hibernate是一个实现了JPA规范的ORM框架,它提供了强大的对象关系映射功能以及其他与持久化相关的特性。 以下是JPAHibernate之间的一些区别: 1. 概念层面:JPA是一种规范,而Hibernate是实现该规范的一个框架。 2. 灵活性:JPA是一种标准化的接口,允许开发人员在不同的JPA实现之间进行切换。因此,使用JPA可以更容易地切换到其他ORM框架,而不仅仅局限于Hibernate。 3. 学习曲线:由于JPA是一个较为抽象的接口,学习和使用JPA可能需要更多时间和学习成本。相比之下,Hibernate提供了更具体和易于理解的API,并且有更多的文档和教程可供参考。 4. 生态系统:Hibernate是一个成熟且广泛使用的ORM框架,拥有强大的社区支持和丰富的生态系统。它提供了丰富的功能和性能优化选项。虽然JPA也有一些实现,但Hibernate被认为是JPA最常用和最流行的实现之一。 总结起来,JPA是Java EE规范中定义的一套ORM接口,而Hibernate是一个实现了JPA规范的强大ORM框架。通过使用JPA,开发人员可以获得更高的灵活性和可移植性,而Hibernate则提供了更具体和易于使用的API以及丰富的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值