您的位置:首页 > 其它

JPA和Hibernate的一些概念

2017-04-27 18:37 162 查看

一、关于JPA

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



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

JBOSS使用hibernate

weblogic是用OpenJPA

Oracle是用TopLink

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

二、关于Hibernate

Hibernate与Mybatis的比较:http://blog.csdn.net/jiuqiyuliang/article/details/45378065
持久化:保存在内存中的数据称为瞬时状态,保存在硬盘上的数据,称为持久状态。持久化是在瞬时状态和持久状态之间转换的机制。

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: