最近学到了数据库与java的jdbc方面,还有个DAO模式,写一下自己的理解,后期有什么不对的再改。

  一、数据库三范式的理解

  记得以前上课时,也上了一学期的“数据库系统原理”,给我们上课的老师算是渣渣学校里挺强的了,看得出来,比一般的老师强不少。据说是企业退下来,来我们这教的,然而并没有什么用。上了一学期,留在脑袋里的就三个单词。。欠下的债总是要还的,那时候没好好上,现在补吧,学了一个礼拜,感觉有点理解了。

  一开始,我理解的三范式是这样的:

  第一范式:表中的每个列都不可分割。

  第二范式:加入了主键。

  第三范式:加入了外键。

  感觉很片面,在经过了几天的问人与搜索后,感觉明白了不少,现在是这样的

  第一范式:保证了数据库内每个表中的元素都不可分割,每一列只会有一个属性,比如:产品名称:XXX;不可能是:产品名称/价格:XXX/XX;

  第二范式:属性之中只能有一个主键,被唯一标识。我的理解就是,比如一个人,你的姓名不能决定你是你,因为有重名;你的性别不能证明你是你,因为性别会重复。。。但身份证可以证明你是你,因为它独一无二。

  第三范式:为了消除数据冗余,一个表的数据多了以后,会出现一列中不断的重复几个相同的字,这时候就要分表了。但会查询起来麻烦。

  感觉第三范式比较难懂,但想到以前听一个人说的,1000个字差不多是1KB,空格也算,一些大厂开发的网页之中,代码之间没有空格与换行,就为了提一点速。这也是JS为什么要加“;”的原因。再想到jQuery,有开发版本与发布版本,之间就差了几百K的内存。第一次听到这种说法时,感觉头皮发麻,但想想竟有些认同,每一处的细节都做到了极致,完美的产品才会产生吧?这就叫工匠精神吧。软件工程师也是工程师啊!

  二、DAO与JDBC模式的理解

  JDBC就是一个中间层,是java发布一套标准,让数据库厂商去做一套代码。

  然后用java代码去连接,操作,关闭数据库的操作,一开始还要加载驱动。

  不需要知道里面的内容是怎么实现的,只要调用“一个”接口就行了。

  DAO也是这样,把重复的代码抽出去,到最后的业务逻辑层,只要去调用就可以了,不需要任何的实现方法写在里面。这样代码的可读性会很高。

  

  以上就是我这几天的理解了,下面是我的一些吐槽与感悟

  昨天,教员没来,布置了一个作业给我们做。题目有三个,他只说过第二个,第一第三都没说过,我做了一个下午,第一个也没写出来。但有思路。

  然后去请教了班里学的好的,他是个研究生,不得不佩服,学习能力是真的强。他思路很清晰,跟他讨论一会,我感觉这DAO模式其实也就那么一回事。

  下午的时候,不太懂一个接口的作用,和旁边一个同学一起去问一个人,他也讲出来了。

  去接水时,和我一起问的同学感慨:“毕竟考上本科的,和我们这种转本接本的渣渣不一样。”

  我说:“以前是我不想学,现在想学了……”

  他说:“说不定人家也不想学呢。。。”

  然后我就不自觉的给自己找了个年龄的借口,什么比同年级人小1岁之类的。

  人真的很奇怪,遇到挫折就不断的给自己找借口,仿佛这样能让自己好受一点,想起前几天看一个博主写的个签,真的霸气侧漏。

  只为成功找方法,不为失败找借口。

  

      

Java SE学习【三】——JDBC的更多相关文章

  1. Java开发学习(三十六)----SpringBoot三种配置文件解析

    一. 配置文件格式 我们现在启动服务器默认的端口号是 8080,访问路径可以书写为 http://localhost:8080/books/1 在线上环境我们还是希望将端口号改为 80,这样在访问的时 ...

  2. Java开发学习(三十七)----SpringBoot多环境配置及配置文件分类

    一.多环境配置 在工作中,对于开发环境.测试环境.生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装 mysql ,连接自己电脑上的 mysql 即可,但是项目开发完毕后要上线就需要该配 ...

  3. Java SE学习之printf 日期转换符

    本文是学习网络上的文章时的总结,感谢大家无私的分享. System.out.printf()方法能够对日期做处理输出. 相应列表 转换符 类型 举例 c 完整的日期和时间 Mon Feb 09 18: ...

  4. java web 学习三(Tomcat 服务器学习和使用2)

    一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下:

  5. Java SE学习之数组——匿名数组和不规则数组

    本文是学习网络上的文章时的总结以及自己的一点实践.感谢大家无私的分享. 近期偶然遇到了数组的问题,学习了匿名数组和不规则数组. 匿名数组适用于仅仅使用一次的情况:不规则数组适用是每行数据总数不确定的情 ...

  6. Java基础学习(三)—面向对象(上)

    一.理解面向对象       面向对象是一种思想,是基于面向过程而言的,就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是 ...

  7. Java编程学习之JDBC连接MySQL

    JDBC连接MySQL 一.对JDBC连接数据库的步骤1.加载数据库驱动//加载驱动Class.forName(driverClass)-------------------------------- ...

  8. JAVA多线程学习- 三:volatile关键字

    Java的volatile关键字在JDK源码中经常出现,但是对它的认识只是停留在共享变量上,今天来谈谈volatile关键字. volatile,从字面上说是易变的.不稳定的,事实上,也确实如此,这个 ...

  9. Java开发学习(三十二)----Maven多环境配置切换与跳过测试的三种方式

    一.多环境开发 我们平常都是在自己的开发环境进行开发, 当开发完成后,需要把开发的功能部署到测试环境供测试人员进行测试使用, 等测试人员测试通过后,我们会将项目部署到生成环境上线使用. 这个时候就有一 ...

随机推荐

  1. datetime空值设置

    Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '' for column ...

  2. MVC005之页面调用控制器中的方法

    描述:控制器在传给页面数据时,有时我们需要对传过来的数据进行二次处理 如: 1:传过来部门编码,但页面上要显示为部门名称 2:格式转换等 我们在写aspx时一般在cs文件中写一个protected的方 ...

  3. Spring mvc接收中文参数值乱码(tomcat配置问题)

    问题| 使用java写的接口,中文参数乱码   问题分析| 请求方打印参数日志,中文无问题,tomcat中日志显示接收的参数乱码   实际是tomcat配置问题   解决方法| 在tomcat的配置文 ...

  4. 无法加载DLL"***.dll":找不到指定的模块

    加载dll的路径不对. 绝对路径不合适,可以换成相对路径. 比如: 把dll放入bin目录下的debug或者release下,然后就可以直接“test.dll”了.不用加路径了. 注意:路径必须与发布 ...

  5. telnet ip/域名 端口 是否成功

    有时候会ping ip 通,但是telnet不通,可能端口未开. telnet不成功,则显示不能打开到主机的链接,链接失败 . telnet成功,则进入telnet页面(全黑的),证明端口可用.

  6. Forms.WebBrowser与Controls.WebBrowser区别

    Forms.WebBrowser与Controls.WebBrowser区别 Forms.WebBrowser有ScrollBarsEnabled 属性,即窗口滚动条,可以设置为false即可: Co ...

  7. defer和async的详细区别

    看过javascript高级程序设计的人,在javascript高级程序设计里,应该看到了介绍了有关defer和async的区别,可是比较浅显,而且也说得不是很清楚.下面我们来通过图片来详细了解下df ...

  8. 大数据hadoop的伪分布式搭建

    1.配置环境变量JDK配置 1.JDK安装 个人喜欢在 vi ~/.bash profile   下配置 export JAVA_HOME=/home/hadoop/app/jdk1.8.0_91ex ...

  9. java里面获取map的key和value的方法

    获取map的key和value的方法分为两种形式: map.keySet():先获取map的key,然后根据key获取对应的value: map..entrySet():同时查询map的key和val ...

  10. mysql 取得各种时间

    转载 取得当前日期:DATE_FORMAT(NOW(),'%e'): 取得当前年月:DATE_FORMAT(NOW(),'%Y-%c'):Y:四位.y:两位:m:两位.c:前面不加0: /*当前时间加 ...