数据库设计

Mybatis,spring,springMVC

三世轮回 提交于 2019-12-15 05:02:00
介绍: 这是我以前在学校的学框架的笔记希望能帮助到大家 谢谢 Mybatis MybatisMybatis简介 什么是mybatis? Mybatis是一个优秀的数据持久层框架,在实体类和SQL语句之间建立映射关系,是一种半自动话的ORM实现。其封装性要低于Hibernate,性能优越,并且小巧,应用也越来越广泛。 Mybatis是一个开源的数据持久层框架。它内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射,几乎消除了所有的JDBC代码和参数的手工设置以及结果集的检索。Mybatis作为持久层框架。其主要思想是将程序中的大量SQL语句剥离出来,配置在配置文件中,实现SQL的灵活配置。这样做能将SQL与程序代码分离,可以在不修改程序代码的情况下,直接在配置文件中修改SQL。 Strut2框架:以WebWork优秀的设计思想为核心,吸收了Struts框架的部分优点,提供了一个更加整洁的基于MVC设计模式实现的Web应用程序框架 Hibernate框架:是一个优秀的持久化框架,负责简化将对象数据保存到数据库中,或从数据库中读取数据并封装到对象中的工作。Hibernate通过简单的配置和编码即可替代JDBC繁琐的程序代码。Hibernate已经成为当前主流的数据库持久化框架,被广泛实际。 什么是数据持久化? 数据持久化是将内存中的数据转换成存储模型

Mybatis—mapper.xml配置文件

百般思念 提交于 2019-12-14 18:26:11
目录 select Select 元素的属性 insert, update 和 delete 示例 sql 参数 (parameterType...) 字符串替换(${} 和 #{}区别) 结果映射 高级结果映射 id & result 关联association (实体类的属性是个实体类) 集合 集合的嵌套 Select 查询 集合的嵌套结果映射 集合的多结果集(ResultSet) 自动映射 缓存 (未完待续) MyBatis 的真正强大在于它的映射语句,这是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 为聚焦于 SQL 而构建,以尽可能地为你减少麻烦。 SQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出): cache – 对给定命名空间的缓存配置。 cache-ref – 对其他命名空间缓存配置的引用。 resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。 parameterMap – 已被废弃!老式风格的参数映射。更好的办法是使用内联参数,此元素可能在将来被移除。 sql – 可被其他语句引用的可重用语句块。 insert – 映射插入语句 update – 映射更新语句 delete –

由代码生成数据库结构,保障设计正常传递到实现

给你一囗甜甜゛ 提交于 2019-12-14 10:51:55
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我们常常使用代码生成工具来生成表结构。为什么不试试从代码来生成数据库表结构呢? 这个观点有些匪夷所思,但是熟悉Hibernate的同志应该有所体会。Hibernate有一个功能,叫做hbm2ddl,在系统启动时,Hibernate扫描hbm映射文件,检查数据库结构和hbm是否匹配,如果不匹配,则在数据库中增加hbm文件中描述的表或者字段。严格意义上来说,这不是从“代码”生成表结构,而是由“hbm配置文件”生成表结构。后来,当Hibernate支持注解功能后,hbm2ddl也会自动扫描EntityBean上的注解,来与数据库表结构进行匹配。所以,这个hbm2ddl,也算作从代码生成表结构。 回到原点,为什么需要从代码生成表结构的功能? 我们一般的开发过程,是先做了“数据库设计”,然后在数据库中建表,最后再编写java代码。数据库设计工具,一般提供生成表结构到数据库的功能,也提供生成和表结构对应的javabean功能。 【数据库】<-【数据库设计工具】->【JavaBean】 如果我们的数据库一次成型,永不改变,每个版本只做代码层面业务逻辑上的变动,那么上面的过程是比较完美的。 但实际上,作为一个长期维护的软件系统,数据库设计不变动,是几乎不可能的。那么,当开发下一个版本的时候,我们首先需要变动的是数据库设计文件

数据库(表结构)设计技巧及注意事项

南笙酒味 提交于 2019-12-13 23:03:16
 当您在决定 开发 一个 数据库 管理项目时,最先着手的工作就应是数据库表结构的设计了。可以这么说,表结构的设计是开发数据库管理项目的基石,一个糟糕的表结构设计,可能会严重延误您的项目开发周期,使您大量的劳动时间为此付之东流。表结构设计是数据库逻辑设计的重要组成部分,直接影响到数据库的性能,所以小编在本文对数据库(表结构)设计技巧及注意事项做一个讲解!   1.表名一般以【模块名称_具体表名】来实现,同一个模块的前缀是一样的。( Oracle 大小写敏感,在SQL中可以不用"_",因为可以用大小写一起的写法。这也是可以的)   2.表名称不应该取得太长(一般不超过三个英文单词,不推荐使用中文拼音,总的长度不要超过30个字符)。表名使用英文的原因,有些项目有英文版的需要,或者这个项目是给外国做的时候,使用英文是基本的要求,应该说这是一个习惯问题,多学一点英文也不是坏事   3.不使用tab或tb作为表前缀(本来就是一个表,为什么还要说明)。   4.一些作为多对多连接的表,可以使用两个表的前缀作为表名:如:用户登录表User_Login,用户分组表User_GroupInfo,这两个表建立多对多关系的表名为:User_Group_Relation(关系统一用Relation)。注意一点,主键在做其他表的外键时,或者在被其他表引用时,字段说明和字段名尽量保持一致,比如发帖表BBS

数据库系统简介及数据库介绍

社会主义新天地 提交于 2019-12-12 07:16:15
数据库:保管数据的仓库,是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。 数据库的特点:实现数据共享;减少数据冗余;采用特定的数据类型;具有较高的数据独立性;具有统一的数据控制功能。 数据库表 在关系型数据库中,数据库表是一系列二维数组的集合,用来存储数据和操作数据的逻辑结构。它由纵向的列和横向的行组成,行被称为记录,是组织数据的单位;列被称为字段,每一列表示记录的一个属性,都有相应的描述信息,如数据类型、数据宽度等。 数据类型 数据类型决定了数据在计算机中的存储格式,代表不同的信息类型。常用的数据类型有:整数数据类型、浮点数数据类型、精确小数类型、二进制数据类型、日期/试卷数据类型、字符串数据类型。表中的每一个字段就是某种指定的数据类型。 主键 主键(primary key)又称主码,用于唯一地标识表中的每一条记录,可以定义表中的一列或多列为主键,主键列上不能有两行相同的值,也不能为空值。 数据库系统 数据库系统是由数据库及其管理软件组成的系统,人们常把与数据库有关的硬件和软件系统统称为数据库系统。 数据库系统3个主要的组成部分。 数据库:用于存储数据的地方。 数据库管理系统:用于管理数据库的软件。 数据库应用程序:伪类提高数据库系统的处理能力所使用的管理数据库的软件补充。 数据库(DataBase System)提供了一个存储空间用以存储各种数据

Mapper XML 文件

我只是一个虾纸丫 提交于 2019-12-11 16:12:12
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 就是针对 SQL 构建的,并且比普通的方法做的更好。 SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序): cache – 给定命名空间的缓存配置。 cache-ref – 其他命名空间缓存配置的引用。 resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。 parameterMap – 已废弃!老式风格的参数映射。内联参数是首选,这个元素可能在将来被移除,这里不会记录。 sql – 可被其他语句引用的可重用语句块。 insert – 映射插入语句 update – 映射更新语句 delete – 映射删除语句 select – 映射查询语句 下一部分将从语句本身开始来描述每个元素的细节。 select 查询语句是 MyBatis 中最常用的元素之一,光能把数据存到数据库中价值并不大,如果还能重新取出来才有用,多数应用也都是查询比修改要频繁。对每个插入、更新或删除操作,通常对应多个查询操作。这是 MyBatis

Hibernate.Everything data

不羁的心 提交于 2019-12-10 15:24:38
Hibernate.Everything data Hibernate ORM:关系数据库域模型持久化 Hibernate Search:全文检索域模型 Hibernate Validator:基于域模型注解约束 Hibernate OGM:Nosql数据库域模型持久化 Hibernate Tools: 命令行工具和Hibernate使用IDE插件 Hibernate ORM 对象/关系映射 JPA(Hibernate同时实现了Java Persistence API规范) 惯用持久化(Hibernate可以开发面向对象下持久化类包括继承、多态、关联、组合和java集合框架。 Hibernate不需要接口或持久化类的基类,使任何类或数据结构是持久化) 高性能(延迟初始化、多种抓取策略和基于自动版本控制和时间戳的乐观锁。 Hibernate不需要特殊的数据库表或字段并且生成的SQL在系统初始化时,而不是在运行时) 可伸缩性(Hibernate是为了工作在一个应用程序服务器集群和提供一个高度可扩展的架构) 可靠性 可扩展性(Hibernate是高度可配置的和可扩展的) Hibernate ORM 入门 System Requirements java 6 or higher Dependency Management <dependency> <groupId>org

关于数据库设计与资源描述框架

不羁的心 提交于 2019-12-10 09:41:48
  资源描述框架(Resource Description Framework,RDF)是一个使用XML语法来表示的资料模型(Datamodel),用来描述Web资源的特性,及资源与资源之间的关系,每条RDF语句是一个三元组<主体,属性,客体>,其中主体是被描述的资源,客体表示主体在属性上的取值,可以是另外一个资源或者是文本。     遇到选择数据库操作的问题,发现使用RDF数据模型对于处理多对多的复杂数据关系有很好的效果,RDF数据模型具有天然的图结构,因此以图结构存储可以避免RDF逻辑数据模型到物理数据模型的转换。目前了解到的可以用来做RDF处理的有D2R和Neo4j数据库。传统的方法是以关系数据模型或对象数据模型来看待RDF数据,在存储层使用关系型数据库或面向对象数据库来存储,但是RDF数据无模式特性使得基于关系型数据库的存储方案存在诸多限制,而且对大规模的RDF数据管理适应性不强。 查询 RDF 数据的语义信息需要重构RDF 图,以图结构存储 RDF 数据避免了重构 。 来源: https://www.cnblogs.com/nostopcoding/p/12014791.html

Mybatis常见面试题总结

半城伤御伤魂 提交于 2019-12-09 01:55:10
1、什么是Mybatis? (1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。 (2)MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 (3)通过xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java对象和 statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。(从执行sql到返回result的过程)。 2、Mybaits的优点: (1)基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。 (2)与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接; (3)很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。 (4)

mybatis一级缓存与二级缓存

亡梦爱人 提交于 2019-12-07 23:20:31
一级缓存 :默认开启 MyBatis一级缓存的生命周期和SqlSession一致。 MyBatis一级缓存内部设计简单,只是一个没有容量限定的HashMap,在缓存的功能性上有所欠缺。 MyBatis的一级缓存最大范围是SqlSession内部,有多个SqlSession或者分布式的环境下,数据库写操作会引起脏数据, 脏数据原因:在一个sqlSession中执行几个查询操作,但在这些查询操作中间另一个sqlSession去更新了数据库,而这次的更新第一个sqlSession是无感知的,此时它再去查询依然是在缓存中查询 使用mybatis-spring时一级缓存失效(原因没弄懂) 二级缓存: 默认关闭       生命周期为namespace   开启二级缓存的步骤:一开启全局缓存(setting中 默认开启)             二在对应的mapper.xml中开启   当sqlSession没有关闭时或者提交时,这次查询的数据不会缓存到二级缓存 MyBatis的二级缓存相对于一级缓存来说,实现了 SqlSession 之间缓存数据的共享,同时粒度更加的细,能够到 namespace 级别,通过Cache接口实现类不同的组合,对Cache的可控性也更强。 MyBatis在多表查询时,极大可能会出现脏数据(一个namespace中的缓存变化对另一个namespace是无感知的)