我们在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. android 开启本地相册选择图片并返回显示

    .java package com.jerry.crop; import java.io.File; import android.app.Activity; import android.conte ...

  2. Linux初学:(一)Linux概述

    Linux各个目录的结构介绍 Linux系统以目录的方式来组织和管理系统中的所有文件.Linux系统通过目录将系统中的所有的文件分级.分层组织在一起,形成了Linux文件系统的树形结构层次.以根目录“ ...

  3. java设计模式之组合模式

    组合模式 组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性.掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 & ...

  4. Makefile 编写 tips

    1.变量赋值 VARIABLE = value #在执行时扩展,允许递归扩展 VARIABLE := value #在定义时扩展 VARIABLE ?= value #只有在该变量为空时才设置该值 V ...

  5. 第8章 Java类的三大特性之一:封装

    1.什么是封装 1.1概念 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问.主要是类的属性 1.2好处 a.只能通过规定的方法访问数据b.隐藏类 ...

  6. Selenium-java-TestNg-的运行

    package com.day.www; import org.testng.annotations.AfterClass;import org.testng.annotations.AfterMet ...

  7. Xcode8与iOS10那些事

    一.证书管理 用Xcode8打开工程后,比较明显的就是下图了,这个是苹果的新特性,可以帮助我们自动管理证书.建议大家勾选这个Automatically manage signing(Ps.但是在bea ...

  8. java多线程系类:JUC线程池:02之线程池原理(一)

    在上一章"Java多线程系列--"JUC线程池"01之 线程池架构"中,我们了解了线程池的架构.线程池的实现类是ThreadPoolExecutor类.本章,我 ...

  9. 原创jquery插件treeTable(转)

    由于工作需要,要直观的看到某个业务是由那些子业务引起的异常,所以我需要用树表的方式来展现各个层次的数据. 需求: 1.数据层次分明: 2.数据读取慢.需要动态加载孩子节点: 3.支持默认展开多少层. ...

  10. 基于thrift的微服务框架

    前一阵开源过一个基于spring-boot的rest微服务框架,今天再来一篇基于thrift的微服务加框,thrift是啥就不多了,大家自行百度或参考我之前介绍thrift的文章, thrift不仅支 ...