我们在Java中谈到持久化时,一般是指利用SQL在关系数据库中存储数据。

  ORM映射元数据,JPA支持XML和JDK 5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,

框架据此将实体对象持久化到数据库表中;

  JPA 框架中支持大数据集、事务、并发等容器级事务,这使得 JPA 超越了简单持久化框架的局限,

在企业应用发挥更大的作用。

  在Java应用程序中使用SQL数据库时,Java代码通过Java数据库连通性(Java DataBase Connectivity,JDBC)

API把SQL语句发到数据库。无论是手工编写SQL并嵌入到Java代码里面,还是由Java代码在运行中生成,都要用JDBC

API绑定实参,来准备查询参数、执行查询、滚动查询结果表、从结果集中获取值等等。这些都是底层的数据访问任务。

作为应用程序开发人员,我们更关注需要这些数据访问的业务问题。我们真正想编写的是把对象的代码——类的实例——

保存和获取到数据库,或从数据库获取,使我们从这类底层的苦差事中解脱出来。

  数据库管理系统提供数据级的安全性。当我们讨论持久化时,考虑以下这些事情:

1、结构化数据的存储、组织和获取;

2、并发性和数据完整性;

3、数据共享。

领域模型。表——类

  业务逻辑并不直接在SQL结果集的行和列上进行工作,而是与这个面向对象的领域模型

及其作为关联对象网络的运行时实现进行交互。多态。

  在持久化的上下文中,同一性与系统如何处理高速缓存和事务密切相关。

  类之间的关系如何被映射和处理。数据库中的外键就是你所需要的一切吗??

  在一个中型或者大型应用程序中,按关注点组织类通常比较有意义。持久化是一个关注点。

    1、理解对象-关系持续性

  Hibernate协调应用与关系型数据库的交互。

  在任何对象持续性解决方案中,实体关联的映射与管理都是中心概念。

  分层的体系结构定义了实现不同关注点的代码之间的接口,允许改变现实关注点的方法,无需

明显破坏其他层中的代码。分层也决定了产生中间层依赖的种类。规则如下:

1、层由上到下进行通信。每一层仅依赖于其直接地下层。

2、除了其直接下层,每一层都不知道任何其它层。

什么是ORM??

对象-关系映射(ORM)就是利用描述对象和数据库之间映射的元数据,自动(且透明)地把Java

应用程序中的对象持久化到关系数据库中的表。

ORM本质上是把数据从一种表示法(可逆)转换为另一种表示法进行工作。

  领域模型表示用在Java应用程序中的业务实体。在分层的系统架构中,领域模型用来在业务层执行业务逻辑

(在Java中,而不是在数据库中)。这个业务层与下方的持久层交流,以加载和存储领域模型的持久化对象。

ORM是管理持久化的持久层中的中间件。

  Hibernate Session(会话)是个单线程、非共享的对象,表示使用数据库的一个特定工作单元。它有持久化管理器API,调用它来加载

和存储对象。(Session的内部由一列SQL语句组成,这些语句要与数据库在某个时点上进行同步,且托管持久化实例的一个印象由Session监控)。

  dialect方言的设置使得Hibernate知道必须生成哪个SQL变种来与数据库进行对话;Hibernate配有许多种方言。

SessionFactory是给一组特定的映射元数据表示特定Hibernate配置的一个对象。

  Hibernate仅仅定义了三种状态:瞬时、持久和分离。

  Hibernate认为所有的瞬时实例都是非事务的,瞬时状态的修改不能在任何事务的上下文

执行。这就意味着Hibernate不能对瞬时对象提供任何回滚功能。

  把实例从瞬时状态转换为持久状态有两种方式:调用持久管理器的save()方法或者从已经

存在的持久实例中创建引用。持久实例通常是同Session相关的,是事务的。

Java Persistence with Hibernate的更多相关文章

  1. Manning Java Persistence with Hibernate & hibernate_in_action

    Manning | Java Persistence with Hibernatehttps://www.manning.com/books/java-persistence-with-hiberna ...

  2. Java Hour 44 Hibernate

    其实要学习的东西很多,奈何人的精力和时间终归是有限的. 这里先暂且放下struts2 相关的东西,当然这里也先寄存这不少相关的好书,等我来看. 44.1 Hibernate 是一个好项目 目标在于成为 ...

  3. Java Persistence API(转)

    定义 Java Persistence API JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.[编辑本段]起源 Sun引入新的JPA ORM规范 ...

  4. JAVA PERSISTENCE API (JPA)

    13.2.1. About JPA The Java Persistence API (JPA) is the standard for using persistence in Java proje ...

  5. Java Persistence with MyBatis 3(中文版) 第三章 使用XML配置SQL映射器

    关系型数据库和SQL是经受时间考验和验证的数据存储机制.和其他的ORM 框架如Hibernate不同,MyBatis鼓励开发者可以直接使用数据库,而不是将其对开发者隐藏,因为这样可以充分发挥数据库服务 ...

  6. Java Persistence with MyBatis 3(中文版) 第一章 MyBatis入门

    本章将涵盖以下话题: ž  MyBatis是什么? ž  为什么选择MyBatis? ž  MyBatis安装配置 ž  域模型样例 1.1 MyBatis是什么 MyBatis是一个简化和实现了Ja ...

  7. JPA(Java Persistence API)Java持久化API-介绍

    JPA全称: Java Persistence API JPA的宗旨是为POJO提供持久化标准规范,能够脱离容器独立运行,很方便开发和测试.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关 ...

  8. 关于注解-Hebernate与JPA(java persistence api)

    The JPA spec. defines the JPA annotation in the javax.persistence package. Hibernate not only implem ...

  9. Java EE (4) -- Java EE 6 Java Persistence API Developer Certified Expert(1z0-898)

    Overview of the Java Persistence API Describe the basics of Object Relational Mapping (ORM) Define t ...

随机推荐

  1. centos 6.x安装rvm 配置 Ruby开发环境

    rvm是ruby的版本管理工具  还可对ruby进行 安装 卸载 等 1.安装 curl #  sudo yum install  curl #  curl -L  get.rvm.io | bash ...

  2. Fiddler进行模拟Post提交数据,总为null解决方式

    Fiddler模拟post提交时总是为空,解决办法 如果是表单提交则要在header加上 ContentType:application/x-www-form-urlencoded 如果是要post提 ...

  3. 打地鼠游戏iOS源码项目

    打地鼠游戏源码,游戏是一款多关卡基于cocos2d的iPad打地鼠游戏源码,这也是一款高质量的打地鼠游戏源码,可以拥有逐步上升的关卡的设置,大家可以在关卡时设置一些商业化的模式来盈利的,非常完美的一款 ...

  4. 深入理解Java反射

    要想理解反射的原理,首先要了解什么是类型信息.Java让我们在运行时识别对象和类的信息,主要有2种方式:一种是传统的RTTI,它假定我们在编译时已经知道了所有的类型信息:另一种是反射机制,它允许我们在 ...

  5. 关于JSP---三大指令

    JSP三大指令: page    ------>最复杂的一个指令,属性很多,常用的像import,language,pageEncoding等等 include-------->静态包含, ...

  6. IO(六)--- 编码和解码

    编码: 把看得懂的字符变成看不懂码值这个过程我们称作为编码. 解码: 把码值查找对应的字符,我们把这个过程称作为解码. 注意: 以后编码与解码一般我们都使用统一的码表.否则非常容易出乱码. 常用码表: ...

  7. Zencart视频教程 Zencart模板制作教程视频 Zencart仿站教程资料

    Zen Cart是国外一个免费的.界面友好,开放式源码的购物车软件,是目前外贸行业使用最为广泛的网站程序.本仿站技术需要你有一定的html和css基础,易学易懂,一步一步地教你操作和使用Zen Car ...

  8. LeetCode:3Sum, 3Sum Closest, 4Sum

    3Sum Closest Given an array S of n integers, find three integers in S such that the sum is closest t ...

  9. 为Debian/Ubuntu的apt-get install添加自动补齐/完成功能

    Debian/Ubuntu的apt-get太常用了,不过偶尔可能也会碰到不太熟悉,想不起来的包的名称,除了去debian packages去查找,另外的方法就是给Debian/Ubuntu添加自动补齐 ...

  10. js中let和var定义变量的区别

    let变量之前没见过,刚遇到,探探究竟. 以下转自:http://blog.csdn.net/nfer_zhuang/article/details/48781671 声明后未赋值,表现相同 (fun ...