我们在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. Oracle数据库穿越防火墙访问

    原因 Oracle listener 只起一个中介作用,当客户连接它时,它根据配置寻找到相应的数据库实例进程,然后spawned一个新的数据库连接,这个连接端口由listener传递给客户机,此后客户 ...

  2. 【第一篇献给markdown】markdown入门

    Markdown 是一种轻量级的「标记语言」,语法十分简单,常用的标记符号也不超过十个.虽然功能很强大,但是上手估计不用十分钟. 一些认识 Markdown 官方文档 这里可以看到官方的 Markdo ...

  3. [转载]python中的sys模块(二)

    #!/usr/bin/python # Filename: using_sys.py import sys print 'The command line arguments are:' for i ...

  4. Eclipse SVN图标等设置

  5. jquery的回调对象Callbacks详解

    Callbacks : 对函数的统一管理 Callbacks的options参数接受4个属性,分别是once : 只执行一次momery : 记忆stopOnFalse : 强制退出循环unique ...

  6. 去除多余的cell 和最后一行cell显示顶头底线

    去除多余cell YourTableview.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero]; 最后一行cell底线顶头显示 s ...

  7. Lrc2Srt字幕转换精灵

    最近喜欢下点英文的MV,可字幕太少了,可lrc文件却很丰富,写了一个转换精灵 下载地址:http://files.cnblogs.com/files/rovedog/Lrc2Srt.zip 需要.ne ...

  8. Openjudge 1.13-28:出现次数超过一半的数

    总时间限制:  1000ms 内存限制:  65536kB 描述 给出一个含有n(0 < n <= 1000)个整数的数组,请找出其中出现次数超过一半的数. 数组中的数大于-50且小于50 ...

  9. PHP操作MySQL数据库5个步骤

    PHP操作MySQL数据库一般可分为5个步骤:1.连接MySQL数据库服务器:2.选择数据库:3.执行SQL语句:4.关闭结果集:5断开与MySQL数据库服务器连接. 1.用mysql_connect ...

  10. HttpClient学习整理

    HttpClient简介HttpClient 功能介绍    1. 读取网页(HTTP/HTTPS)内容    2.使用POST方式提交数据(httpClient3)    3. 处理页面重定向    ...