Hibernators 是一种特殊的动物,它们能够在冬季进入休眠状态,以应对寒冷的气候。它们通常在冬季进入休眠,并在春天醒来。它们的体温会降低到几乎与环境温度相同的水平,而心跳和呼吸也会减慢到几乎可以忽略不计的水平。
Hibernators 可以分为两类:真正的 hibernators 和间歇性 hibernators。真正的 hibernators 是那些能够进入长期休眠状态的动物,例如北极熊、松鼠、蝙蝠和野牛。间歇性 hibernators 则是那些只能进入短期休眠状态的动物,例如野兔、松鼠和海狸。
// 真正 hibernator 的例子 var trueHibernators = ["Polar Bear", "Squirrel", "Bat", "Bison"]; // 间歇性 hibernator 的例子 var intermittentHibernators = ["Rabbit", "Squirrel", "Beaver"];
Hibernation 过程中动物体内发生了很多变化,它们会降低新陈代谢速度,减少血液中血糖浓度,并将大部分血液流向心脏和大脑。这样一来,动物就可以保存能量并避免因寒冷而受到伤害。
Hibernation 过程中动物体内也会产生一些保护性化学物质,例如甘氨酸、丝氨酸和半胱氨酸。这些化学物质有助于保护动物免受寒冷天气带来的影响,使它们能够在寒冷天气中生存下去。
// 甘氨酸、丝氨酸和半胱氨酸是三种保护性化学物质 var protectiveChemicals = ["Glycine", "Serine", "Cysteine"];
Hibernation 过程中动物体内也会释放一些神经递质(neurotransmitters ), 它们有助于减少神经元之间的通信, 并使得动物进入一个“昏昏欲睡”的状态, 这样就不会感到寒冷或者不适。
// 神经递质 (neurotransmitters) 的例子 var neurotransmitters = ["GABA", "Serotonin", "Dopamine"];
JDBC 代表 Java Database Connectivity ,它是提供了一组 Java API 来访问关系数据库的 Java 程序。这些 Java APIs 可以使 Java 应用程序执行 SQL 语句,能够与任何符合 SQL 规范的数据库进行交互。
JDBC 提供了一个灵活的框架来编写操作数据库的独立的应用程序,该程序能够运行在不同的平台上且不需修改,能够与不同的 DBMS 进行交互。
JDBC 的优点 | JDBC 的缺点 |
---|---|
干净整洁的 SQL 处理 | 大项目中使用很复杂 |
大数据下有良好的性能 | 很大的编程成本 |
对于小应用非常好 | 没有封装 |
易学的简易语法 | 难以实现 MVC 的概念 |
查询需要指定 DBMS |
当我们工作在一个面向对象的系统中时,存在一个对象模型和关系数据库不匹配的问题。RDBMSs 用表格的形式存储数据,然而像 Java 或者 C# 这样的面向对象的语言它表示一个对象关联图。考虑下面的带有构造方法和公有方法的 Java 类:
public class Employee {
private int id;
private String first_name;
private String last_name;
private int salary;
public Employee() {}
public Employee(String fname, String lname, int salary) {
this.first_name = fname;
this.last_name = lname;
this.salary = salary;
}
public int getId() {
return id;
}
public String getFirstName() {
return first_name;
}
public String getLastName() {
return last_name;
}
public int getSalary() {
return salary;
}
}
现考虑以上的对象需要被存储和索引进下面的 RDBMS 表格中:
create table EMPLOYEE (
id INT NOT NULL auto_increment,
first_name VARCHAR(20) default NULL,
last_name VARCHAR(20) default NULL,
salary INT default NULL,
PRIMARY KEY (id)
);
第一个问题,如果我们开发了几页代码或应用程序后,需要修改数据库的设计怎么办?
第二个问题,在关系型数据库中加载和存储对象时我们要面临以下五个不匹配的问题。
不匹配 | 描述 |
---|---|
粒度 | 有时你将会有一个对象模型,该模型类的数量比数据库中关联的表的数量更多 |
继承 | RDBMSs 不会定义任何在面向对象编程语言中本来就有的继承 |
身份 | RDBMS 明确定义一个 "sameness" 的概念:主键。然而,Java 同时定义了对象判等(a==b)和 对象值判等(a.equals(b)) |
关联 | 面向对象的编程语言使用对象引用来表示关联,而一个 RDBMS 使用外键来表示对象关联 |
导航 | 在 Java 中和在 RDBMS 中访问对象的方式完全不相同 |
Object-Relational Mapping (ORM) 是解决以上所有不匹配问题的方案。
ORM 表示 Object-Relational Mapping (ORM),是一个方便在关系数据库和类似于 Java, C# 等面向对象的编程语言中转换数据的技术。一个 ORM 系统相比于普通的 JDBC 有以下的优点。
序号 | 优点 |
---|---|
1 | 使用业务代码访问对象而不是数据库中的表 |
2 | 从面向对象逻辑中隐藏 SQL 查询的细节 |
3 | 基于 JDBC 的 "under the hood" |
4 | 没有必要去处理数据库实现 |
5 | 实体是基于业务的概念而不是数据库的结构 |
6 | 事务管理和键的自动生成 |
7 | 应用程序的快速开发 |
一个 ORM 解决方案由以下四个实体组成:
序号 | 优点 |
---|---|
1 | 一个 API 来在持久类的对象上实现基本的 CRUD 操作 |
2 | 一个语言或 API 来指定引用类和属性的查询 |
3 | 一个可配置的服务用来指定映射元数据 |
4 | 一个技术和事务对象交互来执行 dirty checking, lazy association fetching 和其它优化的功能 |
在 Java 中有几个持久化的框架和 ORM 选项。一个持久化的框架是 ORM 存储和索引对象到关系型数据库的服务。
JSP可以通过HTML的form表单上传文件到服务器。 文件类型可以是文本文件、二进制文件、图像文件等其他任何文档。创建文件上传表单...
Servlet 文件上传Servlet 可以与 HTML form 标签一起使用,来允许用户上传文件到服务器。上传的文件可以是文本文件或图像文件或...
Servlet 自动刷新页面假设有一个网页,它是显示现场比赛成绩或股票市场状况或货币兑换率。对于所有这些类型的页面,您需要定期刷...
你在你的VBA过程里面通过使用专门的控制结构里的条件表达式来做决定。条件表达式是使用关系运算符(见表5-1),逻辑运算符(见表...
到目前为止,你已经在本章里尝试了很多种循环了,每种过程示范每个循环结构的使用。然而,在编程中,一循环总是放在另外一循环中...