Java Persistence with Hibernate
我们在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的更多相关文章
- Manning Java Persistence with Hibernate & hibernate_in_action
Manning | Java Persistence with Hibernatehttps://www.manning.com/books/java-persistence-with-hiberna ...
- Java Hour 44 Hibernate
其实要学习的东西很多,奈何人的精力和时间终归是有限的. 这里先暂且放下struts2 相关的东西,当然这里也先寄存这不少相关的好书,等我来看. 44.1 Hibernate 是一个好项目 目标在于成为 ...
- Java Persistence API(转)
定义 Java Persistence API JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.[编辑本段]起源 Sun引入新的JPA ORM规范 ...
- JAVA PERSISTENCE API (JPA)
13.2.1. About JPA The Java Persistence API (JPA) is the standard for using persistence in Java proje ...
- Java Persistence with MyBatis 3(中文版) 第三章 使用XML配置SQL映射器
关系型数据库和SQL是经受时间考验和验证的数据存储机制.和其他的ORM 框架如Hibernate不同,MyBatis鼓励开发者可以直接使用数据库,而不是将其对开发者隐藏,因为这样可以充分发挥数据库服务 ...
- Java Persistence with MyBatis 3(中文版) 第一章 MyBatis入门
本章将涵盖以下话题: ž MyBatis是什么? ž 为什么选择MyBatis? ž MyBatis安装配置 ž 域模型样例 1.1 MyBatis是什么 MyBatis是一个简化和实现了Ja ...
- JPA(Java Persistence API)Java持久化API-介绍
JPA全称: Java Persistence API JPA的宗旨是为POJO提供持久化标准规范,能够脱离容器独立运行,很方便开发和测试.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关 ...
- 关于注解-Hebernate与JPA(java persistence api)
The JPA spec. defines the JPA annotation in the javax.persistence package. Hibernate not only implem ...
- 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 ...
随机推荐
- Android 中shape的使用(圆角矩形)
一.在res/drawable文件夹下创建一个名为gradient_box的xml文件: <?xml version="1.0" encoding="utf-8&q ...
- monkeyrunner之测试结果判断(八)
monkeyrunner的功能脚本编写完成之后,我们就需要对结果进行判断,判断结果是否为我们预期的结果值.下面我们主要讲述2种方式判断结果. 方式一.monkeyrunner截图对比 这是monkey ...
- MVC架构学习之EasyFirst——快点夸我爱学习~
iMooc上的MVC教程练习. MVC是PHP基础和进阶的分界点吧应该说是 一.准备 工欲善其事~ 个人环境:windows10+wamp2.5+ZendStudio12: 项目名称:MVCEasyF ...
- HTML ------ 关于表单 Form
Form(表单)主要用于采集和提交用户输入的信息,是页面与WEB服务器交互过程中 最重要的信息来源. 掌握表单(Form)有以下几个要点: 重要form属性 form常用控件 form提交方式 § 重 ...
- POJ3368Frequent values[RMQ 游程编码]
Frequent values Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17581 Accepted: 6346 ...
- JSP 错题
(选择一项) 8 A: B: C: D: 正确答案是 D 您回答的是 A 回答错误 试题分析:web容器处理JSP文件请求的三个阶段翻译阶段:这一个阶段,编写好的jsp文件首先被web容器中的 ...
- mongodb基本操作的学习
1.基本操作: 如何安装?创建存放数据的文件夹 robomongo: 图形化管理工具 create -->save -->connect 创建数据库:use Database_name 检 ...
- php 异常处理类
PHP具有很多异常处理类,其中Exception是所有异常处理的基类. Exception具有几个基本属性与方法,其中包括了: message 异常消息内容code 异常代码file 抛出异常的文件名 ...
- RecyclerView的使用(三)
上个小结中介绍了如何使用RecyclerView显示不同的数据展示样式(瀑布流也是可以显示的,从GridView改就好) 本节来为RecyclerView的item添加监听事件. RecyclerVi ...
- 显式意图启动一个Activity
显式意图主要是通过指定包名和类名开启一个组件,主要用于安全性要求高的,且不想被其他应用开启,可以不配置应用过滤器. 1.创建意图对象 Intent intent = new Intent(); 2.指 ...