Microsoft Word - JkfZw3

Similar documents
输入 project name 选择完成

7 以下关于 SessionFactory 的说法正确的是 ( ) A 对于每个数据库事务, 应该创建一个 SessionFactory 对象 B 一个 SessionFactory 对象对应多个数据库存储源 C SessionFactory 是重量级的对象, 不应该随意创建 如果系统中只有一个数据

设计模式 Design Patterns

untitled

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

RunPC2_.doc

untitled

ASP.NET MVC Visual Studio MVC MVC 範例 1-1 建立第一個 MVC 專案 Visual Studio MVC step 01 Visual Studio Web ASP.NET Web (.NET Framework) step 02 C:\M

软件概述

FileMaker 15 ODBC 和 JDBC 指南

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

FileMaker 16 ODBC 和 JDBC 指南

计算机软件技术专业教学计划

EJB-Programming-4-cn.doc

基于UML建模的管理管理信息系统项目案例导航——VB篇

优迈科技教学大纲2009版本

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

第6章  数据库技术基础

TopTest_Adminstrator.doc

epub83-1

目錄

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

RUN_PC連載_12_.doc

目 录 目 录 平 台 概 述 技 术 架 构 技 术 特 点 基 于 统 一 平 台 的 多 产 品 线 支 撑 先 进 性 安 全 性 开 放 性 高 性 能 和

温州市政府分散采购

11 天 山 区 区 环 卫 清 运 队 机 械 工 程 师 4011 C 1 不 限 不 限 机 电 具 有 两 以 工 作 经 12 天 山 区 乌 鲁 木 齐 市 第 15 小 会 计 4012 C 1 不 限 不 限 会 计 财 会 财 电 算 化 临 床 医 预 防 医 公 共 卫 生 与

FAQ -PowerDesigner9.5.DOC

天津天狮学院关于修订2014级本科培养方案的指导意见

untitled

XXXXXXXX

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

软 件 工 程 专 业 习 指 南 目 录 一 软 件 工 程 专 业 设 置 背 景 与 发 展 前 景... 3 二 软 件 工 程 专 业 实 践 教 条 件... 4 三 软 件 工 程 专 业 课 程 类 型 及 核 方 式 软 件 工 程 专 业 课 程 类 型...7

本 课 程 作 为 非 计 算 机 专 业 本 科 通 识 课 程, 是 一 门 理 论 和 实 践 紧 密 结 合 的 实 用 课 程, 内 容 包 括 计 算 机 基 础 部 分 和 程 序 设 计 部 分 计 算 机 基 础 部 分 涵 盖 计 算 机 软 硬 件 组 成 数 制 表 示 操

IP505SM_manual_cn.doc


Hive:用Java代码通过JDBC连接Hiveserver

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

R D B M S O R D B M S R D B M S / O R D B M S R D B M S O R D B M S 4 O R D B M S R D B M 3. ORACLE Server O R A C L E U N I X Windows NT w w

IoC容器和Dependency Injection模式.doc

基于CDIO一体化理念的课程教学大纲设计

幻灯片 1


信息

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

Microsoft Word - 13院21号.doc

SiteView技术白皮书

untitled

0 配置 Host MIB 设备 V ( 简体版 ) 0 Update: 2016/1/30

PPBSalesDB.doc

无类继承.key

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指

IBM Rational ClearQuest Client for Eclipse 1/ IBM Rational ClearQuest Client for Ecl

untitled

untitled

序 言 本 专 业 人 才 培 养 方 案 以 适 应 市 场 需 求 为 目 标, 根 据 学 校 校 企 双 主 体 人 才 培 养 的 要 求 和 移 动 应 用 开 发 专 业 的 特 点 设 置 课 程 体 系, 体 现 了 课 程 为 市 场 服 务 的 特 点 本 专 业 要 求 学

提问袁小兵:

一 個 SQL Injection 實 例 的 啟 示 頁 2 / 6 因 此, 在 知 名 網 站 上 看 到 SQL Injection, 讓 人 驚 心, 卻 不 意 外 網 站 專 案 外 包 是 目 前 業 界 的 常 態, 而 在 價 格 取 勝 的 制 度 下, 低 價 得 標 的 S

A API Application Programming Interface 见 应 用 程 序 编 程 接 口 ARP Address Resolution Protocol 地 址 解 析 协 议 为 IP 地 址 到 对 应 的 硬 件 地 址 之 间 提 供 动 态 映 射 阿 里 云 内

"+handlermethod.getbean().getclass().getname()); public void aftercompletion(httpservletrequest req, HttpServletResponse resp, Object handler, Excepti

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

附录J:Eclipse教程

目 錄 第 一 章 weberp 簡 介... 6 第 一 節 概 述... 6 第 二 節 安 全 性... 7 第 三 節 功 能... 7 一 銷 售 及 訂 單... 7 二 稅... 8 三 應 收 帳 款... 8 四 存 貨... 8 五 購 買... 9 六 應 付 帳 款... 9

目 錄 版 次 變 更 記 錄... 2 原 始 程 式 碼 類 型 之 使 用 手 冊... 3 一 安 裝 軟 體 套 件 事 前 準 備... 3 二 編 譯 流 程 說 明

自动化接口

目 录 第 五 部 分 第 六 部 分 第 七 部 分 第 八 部 分 投 标 邀 请 投 标 人 须 知 附 表 评 标 方 法 和 评 分 细 则 项 目 需 求 和 技 术 方 案 要 求 1

f2.eps

Azure_s

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

职 位 类 别 : 测 试 工 程 师 工 作 经 验 或 实 习 经 历 : 不 限 岗 位 要 求 : 1. 本 科 及 其 以 上 学 历, 计 算 机 相 关 专 业 2014 届 毕 业 生 ; 2. 实 习 时 间 要 求, 尽 量 一 周 五 个 工 作 日 ; 3. 熟 悉 Wind

untitled

RunPCPB8 new feature.PDF

untitled

电信行业网上营业厅

4.1 AMI MQSeries API AMI MQI AMI / / AMI JavaC C++ AMI / AMI AMI - / /

ABSSetup.doc

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

工程施工招标

Transcription:

第 3 章持久层框架 Hibernate 3.1 Hibernate 简介 3.1.1 ORM 简介对象 / 关系映射 (Object-Relation Mapping,ORM) 是这样一种模式, 在一个组件中将对象持久化并且封装对数据库的访问细节的一种模式 这里主要谈及 Java 和数据库中的 ORM 关系 Java 是面向对象的, 而数据库多是关系型数据库,ORM 是用于将对象之间的关系对应到数据库中的表之间关系的一种模式 对象和关系都是业务实现的两种表现形式, 在 Java 程序中表现为对象, 在数据库中表现为关系数据 程序中的对象表示着关联和继承关系, 但是在数据库中, 关系数据无法直接表示多对多的关系和继承关系 ORM 解决的主要问题就是对象 - 关系之间的映射 在 Java 中, 就是从 Java 中的对象到数据库中的关系的映射 很多开源社区和厂商都提供了持久层框架的实现, 其中,Hibernate 的轻量级 ORM 模型在 Java ORM 中的应用最为广泛, 也是比较成熟的模型之一 3.1.2 Hibernate 体系结构 Hibernate 是一个开源的对象关系映射 (ORM) 框架, 它对 JDBC 进行了轻量级的封装, 这使得 Java 程序员可以使用面向对象的思想来操作数据库 Hibernate 是 Java 应用程序和关系数据中的桥梁,Hibernate 通过配置文件 (hibernate.cfg.xml) 和映射文件 (*.hbm.xml) 把 Java 对象或者持久化对象 (Persistent Object,PO) 映射到数据库的表中 程序通过操作 PO, 对数据库进行增 删 改 查等各种操作 在 Hibernate 体系中, 主要包含的技术有对象持久化操作 HQL 语言 事务服务 数据库方言技术等 4 个方面 (1) 对象持久化技术 :Hibernate 利用 Java 反射技术来持久化对象, 它可以比较轻松地处理大量不同类型的持久化对象 (2)HQL 语言 :Hibernate 提供了 HQL 语言, 由于抽象出了 SQL, 从而提高了 Hibernate 的健壮性和可读性, 也使得开发人员不必去钻研 SQL 语句, 对不熟悉 SQL 语言的开发人员提供了便利 (3) 事务服务 :Hibernate 借助 JDBC JTA 等来对事务进行处理或调度 (4) 数据库方言技术 : 向下屏蔽了不同数据库之间的 SQL 语句等上的细微差别,

做到了跨数据库处理数据 3.1.3 Hibernate 核心组件 Hibernate 配置文件主要用来配置数据库的连接参数, 例如数据库驱动程序 URL 用户名 密码等 可以用两种方式来配置 Hibernate 配置文件 :hibernate.properties 和 hibernate.cfg.xml 两个配置方法基本一致, 但后者应用的更多一些 一般情况下, hibernate.cfg.xml 是 Hibernate 的默认配置文件 映射文件 (*.hbm.xml) 用来把 PO 与数据库中的表 PO 之间的关系与数据库中表之间的关系 PO 的属性与表字段一一映射起来, 这个是 Hibernate 的核心文件 持久化对象 (Persistent Objects,PO) 可以是普通的 JavaBeans, 特殊的一点在于它们正与一个 Session 相关联 其可能处于 3 种状态 : 临时状态 (transient) 持久化状态 (persistent) 游离状态(detached) 临时对象是指对象在内存中孤立存在 不与数据库中的数据有任何关系 ; 当其与一个 Session 相关联的时候变为持久化对象 ; 当这个 Session 关闭时候, 这个对象就会随之脱离持久化状态, 此时该对象被称为游离对象 除上述配置文件 映射文件 持久化对象外,Hibernate 还包括以下 5 个部分 : Configuration 类 : 用来读取 Hibernate 配置文件, 生成 SessionFactory 对象 SessionFactory 接口 : 产生 Session 实例的工厂 Session 接口 : 用来操作 PO 用 get() update() save() delete() load() 等方法对 PO 进行加载 更新 保存 删除等操作 Session 接口是 Hibernate 的核心接口 Query 接口 : 用来对 PO 进行查询操作 可以从 Session 的 createquery() 方法中生成 Transaction 接口 : 用来管理 Hibernate 事务, 它的主要方法有 commit() rollback(), 可以从 Session 的 begintransaction() 方法中获得 3.2 Hibernate 开发准备 使用 Hibernate, 需要 Hibernate 的 jar 类库包和一些第三方包 可以通过 Hibernate 的官方网站 www.hibernate.org 下载 表 3-1 简单介绍一下 Hibernate 中的一些重要 jar 类库包和 lib 文件夹下的一些第三方 jar 类库包 表 3-1 Hibernate 库文件说明 jar 包名 说 明 hibernate3.jar 包含 Hibernate 的基础框架和核心 API 类库 ant.jar ANT 开发工具 antrl.jar Hibernate 词法分析器, 用它来实现 HQL 到 SQL 的转换 javassist.jar 分析 编辑和创建 Java 字节码的类库 cglib.jar Hibernate 用来实现 PO 字节码的动态生成 第 3 章持久层框架 Hibernate 61

续表 jar 包名说明 c3p0.jar dom4j.jar slf4j.jar commons-logging.jar commons-collection.jar concurrent.jar connector.jar oscache.jar jta.jar junit.jar log4j.jar Jass.jar 内置的一种数据库连接池工具 java 的 XML 解析工具, 基于 DOM 模型 SLF4J 是一个用于日志系统的简单 Facade Apache 服务器日志工具,Hibernate 采用其来为自己写日志 Apache 的集合工具, 包含了一些 Apache 开发的集合类线程同步处理工具 Java 的连接器标准 Hibernate 使用其来实现自身的缓冲管理 Java 事务处理接口 junit 单元测试工具 Apache 的日志工具 Jaas 是用来进行权限验证 以上的开发包中, 只有少部分属于必须存在的包 : hibernate3.jar,antrl.jar,javassist.jar,cglib.jar,dom4j.jar,slf4j.jar,commons-collections.jar 3.3 Hibernate 简单示例 3.3.1 建立数据库和表该示例使用 MySQL 数据库 在 ht 数据库中建立 student 表, 表结构如表 3-2 所示 表 3-2 student 表结构 名称 列名 数据类型 允许空 默认值 说明 学号 id int(8) 否 自动增量 唯一主键 姓名 name varchar(24) 否 无 性别 sex char(1) 是 无 备注 notes varchar(24) 是 无 3.3.2 在 MyEclipse 里创建 MySQL 的连接启动 MyEclipse, 选择 Window Open Perspective MyEclipse Database Explorer 菜单项, 打开 MyEclipse Database 浏览器, 在 DB Browser 区域内, 右键选择菜单项 New, 出现如图 3-1 所示界面, 用来编辑数据库连接驱动 其中 Driver name 一栏填写要建立连接的名称, 在此命名为 MySqlConn, 在 Connection URL 栏中输入要连接数据库的 URL, 为 jdbc:mysql://localhost:3306/ht,3306 为 MySQL 安装的端口号,ht 为数据库名称 在 User name 栏目中填写用户名,Password 62 Java Web 开发教程

图 3-1 创建 MySQL 数据库连接在栏目中填写密码 在 Driver JARs 中单击 Add JARs, 找到数据库驱动 MySQL 的数据库驱动可以在 http://www.mysql.com/ 中下载 编辑完成后, 在 MyEclipse Database 浏览器中, 双击刚刚创建的 MySqlConn 数据库打开连接 3.3.3 创建 Web 项目首先在 MyEclipse 中创建一个新的 Web 项目, 名为 hibernatetest 3.3.4 添加 Hibernate 开发能力右击项目名 hibernatetest, 选择 MyEclipse Add Hibernate Capabilites 菜单项, 出现如图 3-2 所示界面, 选择 Hibernate 框架应用版本以及所需要的类库 单击 Next 按钮, 出现如图 3-3 所示界面 创建 Hibernate 配置文件 hibernate.cfg.xml, 将该文件放在 src 下, 这个文件的作用将在后边具体再作出解释 这里只是说明添加 Hibernate 开发功能的步骤 单击 Next 按钮, 出现如图 3-4 所示界面, 指定 Hibernate 数据库的连接细节 已经配置了一个名叫 MySqlConn 的数据库连接, 所以在 DB Driver 一栏中选择 MySqlConn 单击 Next 按钮, 出现如图 3-5 所示界面 Hibernate 中有一个与数据库打交道的重要类为 Session 这个类由 SessionFactory 创建 这个界面询问是否要创建该类, 并且 第 3 章持久层框架 Hibernate 63

图 3-2 选择 Hibernate 框架所需类库 图 3-3 创建 Hibernate 配置文件 需要指定创建的位置, 即是要指定放在哪个包下 该例子将 SessionFactory 类放在了 cn.com.util 包下 单击 Finish 按钮, 完成 Hibernate 配置 64 Java Web 开发教程

图 3-4 配置 MySQL 数据库连接 图 3-5 创建 SessionFactory 类通过这些步骤, 在项目中增加了一些 Hiberante 的.jar 包 一个 Hibernate.cfg.xml 配置文件和一个 HibernateSessionFactory.java 类 3.3.5 生成数据库表对应的 Java 类对象和映射文件在 MyEclipse 的 hibernatetest 项目下创建包 cn.com.beans, 这个包用来存放与数据库 第 3 章持久层框架 Hibernate 65

表中对应的 Java 类 POJO 从主菜单中, 选择 Windows Open Perspective Other MyEclipse Database Explorer 菜单项, 打开 MyEclipse Database Explorer 视图 打开已经创建的 MySqlConn 数据连接, 右击 student 表, 选择 Hibernate Reverse Engineering 菜单, 将启动 Hibernate Reverse Engineering 向导, 这个向导将帮助用户丛已有的数据库表中生成对应的 Java 类和相关的映射文件 如图 3-6 所示, 首先选择需要生成的 Java 类和映射文件的所在位置,POJO(Plain Old Java Object, 简单的 Java 对象 ) 其中有私有的成员变量和其对应的 getter setter 方法, 一些简单的运算属性也是可以有的, 但一般不允许有业务方法 图 3-6 创建数据库表的逆向 Java 类和映射文件单击 Next 按钮, 出现如图 3-7 所示界面, 选择主键的生成策略 Type Mapping 栏目决定是否在类型映射属性中使用 Java 或 Hibernate 类型 Id Generator 选择生成唯一主键的策略 这里选择的是 native, 是由数据库赋值 单击 Finish 按钮, 完成操作 项目中的 cn.com.beans 包下会出现 Student.java StudentDAO.java 和 Student.hbm.xml Student.java 即为 POJO,StudentDAO.java 为生成的对 Student 的数据访问对象 (Data Access Objects,DAO),Student.hbn.xml 为 Student 对应的映射文件 3.3.6 创建测试类在 src 下创建 cn.com.test, 在该类下建立测试类 Test.java, 代码如下所示 : 66 Java Web 开发教程

图 3-7 选择主键生成策略 01 package cn.com.test; 02 import java.util.list; 03 import org.hibernate.query; 04 import org.hibernate.session; 05 import org.hibernate.transaction; 06 import cn.com.beans.student; 07 import cn.com.util.hibernatesessionfactory; 08 public class Test { 09 public static void main(string[] args){ 10 // 调用 HibernateSessionFactory 的 getsession 方法 11 // 创建 Session 对象 12 Session session = HibernateSessionFactory.getSession(); 13 // 创建事务对象 14 Transaction ts = session.begintransaction(); 15 Student student= new Student(); // 创建 POJO 类的对象 16 student.setname(" 王钰 "); // 设置姓名 17 student.setnotes(" 可造之材 "); // 设置备注 18 student.setsex("m"); // 设置性别 19 session.save(student); // 保存对象 20 ts.commit(); // 提交事务 21 Query query = session.createquery("from Student"); 22 List list = query.list(); 23 if(list.size()!=0){ 24 Student stu = (Student) list.get(0); 第 3 章持久层框架 Hibernate 67

25 System.out.println(stu.getId()+":"+stu.getName()+ 26 ":"+stu.getnotes()+":"+stu.getsex()); 27 } 28 } 29 } 3.3.7 运行该程序可以直接运行 运行程序, 控制台就会打印出 1: 王钰 : 可造之材 :M 该程序的第 14~20 行模拟了数据的生成过程并完成了插入操作, 第 21 行 第 22 行完成了查询操作, 第 23~27 行完成了在控制台的显示 下面开始将讲解各文件的具体作用 3.4 Hibernate 配置文件 3.4.1 基本配置要使用 Hibernate 首先需要了解它的配置文件,Hibernate 支持 XML 和传统的 properties 两种配置文件的格式, 对应的文件名分别为 hibernate.cfg.xml 和 hibernate.properties XML 文件可以为开发人员提供更清楚的可读性和可配置能力, 所以优先应该采用 hibernate.cfg.xml 这种形式 同时,Hibernate 中 XML 格式的优先级也高于 properties, 如果这两种格式同时出现,Hibernate 也将会默认访问 XML 文件 配置文件中需要配置很多方面的内容, 例如 : 数据库系统 JDBC 连接 连接池 数据缓冲 事务处理 数据库方言等 在运行 Hibernate 之前, 首先读入 Hibernate 配置文件, 载入其中的数据库等配置信息 Hibernate.cfg.xml 的最小配置为对 <session-factory> 元素进行配置, 它提供了数据库最基本的连接服务 和 JDBC 连接数据库一样, 需要为 Hibernate 配置数据库驱动 URL 数据库访问所使用的用户名和密码 由于数据库的平台特性 (Oracle MySQL SQLService 等 ), 需要在配置文件中指定数据库方言 最后指定在项目中使用 *.hbm.xml 映射文件的位置 加载 hibernate.cfg.xml 文件的配置信息需要先得到一个 org.hibernate.cfg.configuration 类实例, 再利用 configure() 方法, 将配置文件信息载入到 Configuration 类的实例中, 具体的用法如下 : new Configuration().configure(); 或者是 new Configuration().configure("hibernate.cfg.xml"); 在 3.3 节中所用到的 hibernate.cfg.xml 文件配置如下所示 : 01 <?xml version='1.0' encoding='utf-8'?> 68 Java Web 开发教程

02 <!DOCTYPE hibernate-configuration PUBLIC 03 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 04 "http://hibernate.sourceforge.net/hibernateconfiguration-3.0.dtd"> 05 <hibernate-configuration> 06 <session-factory> 07 <!-- 数据库方言设置 --> 08 <property name="dialect"> 09 org.hibernate.dialect.mysqldialect 10 </property> 11 <!-- 连接数据库使用的 URL --> 12 <property name="connection.url"> 13 jdbc:mysql://localhost:3306/ht 14 </property> 15 <!-- 连接数据库所使用的用户名 --> 16 <property name="connection.username">root</property> 17 <!-- 连接数据库所使用的密码 --> 18 <property name="connection.password">root</property> 19 <!-- 数据库 JDBC 驱动器 --> 20 <property name="connection.driver_class"> 21 com.mysql.jdbc.driver 22 </property> 23 <!-- 数据库映射文件 --> 24 <mapping resource="cn/com/beans/student.hbm.xml" /> 25 </session-factory> 26 </hibernate-configuration> 从上边的配置信息可以看出是对 MySQL 的数据库系统中的 ht 数据库的连接操作, 数据库 JDBC 驱动为 com.mysql.jdbc.driver, 用户名和密码都为 root, 数据库方言为 org.hibernate.dialect.mysqldialect 表 3-3 列出了一些数据库方言设置 表 3-3 数据库方言设置 数据库数据库方言 MySQL Oracle Oracle 9/10g MS SQL Server DB2 DB2 AS/400 Sybase Sybase Anywhere PostgerSQL SAP DB org.hibernate.dialect.mysqldialect org.hibernate.dialect.oracledialect org.hibernate.dialect.oracle9dialect org.hibernate.dialect.sqlserverdialect org.hibernate.dialect.db2dialect org.hibernate.dialect.db2400dialect org.hibernate.dialect. SybaseDialect org.hibernate.dialect. SybaseAnywhereDialect org.hibernate.dialect. PostgerSQLDialect org.hibernate.dialect. SAPDBSQLDialect 第 3 章持久层框架 Hibernate 69