Author:天添豆浆
计算机科学与技术专业,迷摇滚的理科男
新手村码农,第六篇博客,宏观讨论下Java面向对象思想与数据库之间的联系。
数据库结构
1.数据库(Database)
一个数据库由一个或一组数据表组成。每个数据库都以文件的形式存放在磁盘上,即对应于一个物理文件。不同的数据库,与物理文件对应的方式也不一样。
2.数据表(Table)
简称表,由一组数据记录组成,数据库中的数据是以表为单位进行组织的。 一个表是一组相关的按行排列的数据;每个表中都含有相同类型的信息。表实际上是一个二维表格,例如,一个班所有学生的考试成绩,可以存放在一个表中,表中的每一行对应一个学生,这一行包括学生的学号,姓名及各i门课程成绩。
3.记录(Record)
表中的每一行称为一个记录,它由若干个字段组成。
4.字段(Field)
也称域。表中的每一列称为一个字段。每个字段都有相应的描述信息,如数据类型、数据宽度等。
5.索引(Index)
为了提高访问数据库的效率,可以对数据库使用索引。当数据库较大时,为了查找指定的记录,则使用索引和不使用索弓|的效率有很大差别。索引实际上是一种特殊类型的表,其中含有关键字段的值(由用户定义)和指向实际记录位置的指针,这些值和指针按照特定的顺序(也由用户定义)存储,从而可以以较快的速度查找到所需要的数据记录。
6.查询(Query)
一条SQL(结构化查询语言)命令,用来从一个或多个表中获取一组指定的记录,或者对某个表执行指定的操作。当从数据库中读取数据时往往希望读出的数据符合某些条件,并且能按某个字段排序。使用SQL,可以使这一操作容易实现而且更加有效。SQL是非过程化语言(有人称为第四代语言),在用它查找指定的记录时,只需指出做什么,不必说明如何做。每个语句可以看作是一个查询(query), 根据这个查询,可以得到需要的查询结果。
7.过滤器(Filter)
过滤器是数据库的一个组成部分,它把索引和排序结合起来,用来设置条件,然后根据给定的条件输出所需要的数据。
8.视图(view)
数据的视图指的是查找到(或者处理)的记录数和显示(或者进行处理)这些记录的顺序。在一般情况下,视图由过滤器和索引|控制。
思考:数据库结构和Java面向对象的理论结构之间有什么关联呢?
在思考这个问题前先想想另外一个问题:怎么将一个Map<String,Object>转成JavaBean?
package com.softeem.lesson49.example;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
import com.softeem.lesson49.entity.User;
/**
* 思考如何实现将Map<String,Object>转换为javabean;(反射)
*
* @author 75256
*
*/
public class MapToBeans {
public static <T> T getObject(Map<String,Object> map,Class<T> t) {
T obj = null;
try {
//创建目标对象
obj = t.newInstance();
//获取对象中的所有字段(放入数组)
Field[] field = t.getDeclaredFields();//导lang包
//遍历字段数组
for(Field f : field) {
String fname = f.getName();
//根据属性名获取Map中对应的值
Object value = map.get(fname);
//设置属性可访问
f.setAccessible(true);
//为目标对象设置值 u.setId(10); u.id=10;
f.set(obj, value);
}
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return obj;
}
public static void main(String[] args) {
Map<String,Object> map = new HashMap<>();
map.put("id", 10);
map.put("username", "admin");
map.put("password", "softeem");
User user = getObject(map, User.class);
System.out.println(user);
}
}
不难看出,把一个键值对的Map集合转成一个java对象不难。
那么,如果有一个List集合,List<Map<String,Object>,
就可以作为一个“装很多Java对象的集合”,
那么这个装有一堆对象的集合,就可以对应数据库中的一张“表”。
数据库中每个对象都有唯一索引,且每个对象都有各自的属性。
“键值对”集合Map中的键——String作为索引,
值——Object作为对象的各个属性,
一一对应,就成了数据库中的结构。
示范:
id——键(对象索引)
lowsal、hisal、level——值(对象属性)
引用举例
idea中可以一键将已经编辑好的数据库表导成java实体类 ,特方便!
但前提是:数据库表一定要设计好!
参考资料
百度百科