我们在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. The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

    今天项目中报了如下错误 The last packet sent successfully to the server was 0 milliseconds ago. The driver has n ...

  2. 【转】iframe和父页,window.open打开页面之间的引用

    [转]iframe和父页,window.open打开页面之间的引用 iframe和父页,window.open打开页面和被打开页面之间的关系可以通过下面的对象获取到 1)通过iframe加载的,在if ...

  3. Linux 内核中的 Device Mapper 机制

    本文结合具体代码对 Linux 内核中的 device mapper 映射机制进行了介绍.Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机 ...

  4. insertion sort(插入排序)

    #include<stdio.h> #include<time.h> int insertion_sort() { ; int a[max],i,j; srand((unsig ...

  5. Libevent的IO复用技术和定时事件原理

    Libevent 是一个用C语言编写的.轻量级的开源高性能网络库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大:源代码相当精炼.易 ...

  6. 关于Hadoop的集群环境下虚拟机采用NAT方式连不上网的解决

    使用虚拟机搭建hadoop集群的时候采用的是NAT方式联网,但是会出现时常掉网的现象,查看后排查了很久也没有发现什么问题. 很可能是Windows下的NAT服务没有开启,这时候尽管虚拟机和主机是在一个 ...

  7. 洛谷P1288 取数游戏II[博弈论]

    题目描述 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点开始这个游戏,两人轮流 ...

  8. CF724B. Batch Sort[枚举]

    B. Batch Sort time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  9. IO流基本操作

    第一种分法:.输入流2.输出流 第二种分法:.字节流2.字符流 第三种分法:.节点流2.处理流 //////////////////////////////////////////////////// ...

  10. 关于ES6新增的东西(二)

    六.原生Promise 就是一个对象,用来传递异步操作的数据(消息) pending(等待.处理中)-> Resolve(完成.fullFilled) -> Rejected(拒绝.失败) ...