数据库对象

java反射机制

試著忘記壹切 提交于 2019-12-24 11:55:24
转自:http://www.cnblogs.com/jqyp/archive/2012/03/29/2423112.html 一、什么是反射机制 简单的来说,反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息。 二、哪里用到反射机制 有些时候,我们用过一些知识,但是并不知道它的专业术语是什么,在刚刚学jdbc时用过一行代码,.forName("com.mysql.jdbc.Driver.class").newInstance();但是那时候只知道那行代码是生成驱动对象实例,并不知道它的具体含义。听了反射机制这节课后,才知道,原来这就是反射,现在很多开框架都用到反射机制,hibernate、struts都是用反射机制实现的。 三、反射机制的优点与缺点 为什么要用反射机制?直接创建对象不就可以了吗,这就涉及到了动态与静态的概念, 静态编译:在编译时确定类型,绑定对象,即通过。 动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,体现了多态的应用,有以降低类之间的藕合性。 一句话,反射机制的优点就是可以实现动态创建对象和编译,体现出很大的灵活性,特别是在J2EE的开发中它的灵活性就表现的十分明显。比如,一个大型的软件,不可能一次就把把它设计的很完美,当这个程序编译后,发布了

Django ORM之QuerySet

余生长醉 提交于 2019-12-23 22:15:05
Django ORM用到三个类:Manager、QuerySet、Model。Manager定义表级方法(表级方法就是影响一条或多条记录的方法),我们可以以models.Manager为父类,定义自己的manager,增加表级方法;QuerySet:Manager类的一些方法会返回QuerySet实例,QuerySet是一个可遍历结构,包含一个或多个元素,每个元素都是一个Model 实例,它里面的方法也是表级方法,前面说了,Django给我们提供了增加表级方法的途径,那就是自定义manager类,而不是自定义QuerySet类,一般的我们没有自定义QuerySet类的必要;django.db.models模块中的Model类,我们定义表的model时,就是继承它,它的功能很强大,通过自定义model的instance可以获取外键实体等,它的方法都是记录级方法(都是实例方法,貌似无类方法),不要在里面定义类方法,比如计算记录的总数,查看所有记录,这些应该放在自定义的manager类中。以Django1.6为基础。 1.QuerySet 1.1 简介 每个Model都有一个默认的manager实例,名为objects,QuerySet有两种来源:通过manager的方法得到、通过QuerySet的方法得到。mananger的方法和QuerySet的方法大部分同名,同意思,如filter

Mybatis常见面试题总结

泄露秘密 提交于 2019-12-23 08:31:48
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

db2数据库磁盘存储

人盡茶涼 提交于 2019-12-23 03:38:29
一次完整的IO操作时间=磁盘轴旋转的时间(旋转延迟)+磁盘臂移动时间(寻到时间)+数据传输时间。一次完整的IO时间的经验值是1/80秒,所以对于大型的数据库而言,频繁的IO操作会将微不足道的时间积累的非常可观。 db2 实际数据库包含许多逻辑对象和物理对象。 表,视图,索引,模式,触发器,存储过程,程序包等数据库对象。 缓冲池、日志文件、表空间 物理存储、表空间容器、目录、文件系统或裸设备。 这些对象一部分(比如表或视图)帮助决定如何对数据进行组织,其他对象(比如表空间)涉及数据库的物理实现;最后(比如缓冲池和其他内存对象)处理如何管理数据库性能。另外一些对象(比如日志文件)处理数据库的可恢复性。 表空间可以跨许多容器,这就意味着可以突破操作系统对于一个容器可以包含的数据量的限制。 操作系统的最小存储单位是块,在Linux中最小的块是512字节,在windows中,最小的存储单位是1kb, 而数据库中最小的事数据页。DB2中有4,8,16,32kb几种数据页。db2 在写物理存储时,为了保证写的吞吐量,引入了更大的单位extent,它是整数倍的datapage的大小。而表空间容器又是由很多extent组成,同时表空间又由很多容器组成。所以一般可以理解为多个extent组成一个container,多个container组成 表空间。 DB2中有三种管理类型的表空间 系统管理表空间

Hibernate详解

ⅰ亾dé卋堺 提交于 2019-12-23 02:12:19
核心API 编辑 Hibernate的API一共有6个,分别为: Session 、 SessionFactory 、 Transaction 、 Query 、 Criteria 和Configuration。通过这些 接口 ,可以对持久化对象进行存取、事务控制。 Session Session 接口负责执行被持久化对象的 CRUD 操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句)。但需要注意的是 Session对象 是非 线程安全 的。同时,Hibernate的 session 不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。 SessionFactory SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了 工厂模式 。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。 Transaction Transaction 接口是一个可选的API,可以选择不使用这个接口

一条SQL语句查询数据库中的所有表、存储过程、触发器 (sysobjects表信息)

蓝咒 提交于 2019-12-23 01:03:35
该条语句查询返回所有的用户表 select * from sysobjects where xtype='u' 查询系统所有数据表信息 select * from sysobjects sysobjects 在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。只有在 tempdb 内,每个临时对象才在该表中占一行。 列名 数据类型 描述 name sysname 对象名。 Id int 对象标识号。 xtype char(2) 对象类型。可以是下列对象类型中的一种: C = CHECK 约束 D = 默认值或 DEFAULT 约束 F = FOREIGN KEY 约束 L = 日志 FN = 标量函数 IF = 内嵌表函数 P = 存储过程 PK = PRIMARY KEY 约束(类型是 K) RF = 复制筛选存储过程 S = 系统表 TF = 表函数 TR = 触发器 U = 用户表 UQ = UNIQUE 约束(类型是 K) V = 视图 X = 扩展存储过程 uid smallint 所有者对象的用户 ID。 info smallint 保留。仅限内部使用。 status int 保留。仅限内部使用。 base_schema_ ver int 保留。仅限内部使用。 replinfo int 保留。供复制使用。 parent_obj int

在Java中对mysql数据库插入datetime类型数据

只谈情不闲聊 提交于 2019-12-22 16:02:45
Date date=new Date(); //获取一个Date对象 DateFormat simpleDateFormat= new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”); //创建一个格式化日期对象 String punchTime = simpleDateFormat.format(date); //格式化后的时间 来源: CSDN 作者: 弱鸡萌新 链接: https://blog.csdn.net/lihao19990930/article/details/103653123

29_java之JDBC|SQL注入

随声附和 提交于 2019-12-22 13:01:35
01JDBC概念和数据库驱动程序 * A: JDBC概念和数据库驱动程序 * a: JDBC概述 * JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API, 可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。是Java访问数据库的标准规范 * JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。 * JDBC需要连接驱动,驱动是两个设备要进行通信,满足一定通信数据格式,数据格式由设备提供商规定, 设备提供商为设备提供驱动软件,通过软件可以与该设备进行通信。 * 我们使用的是mysql的驱动mysql-connector-java-5.1.39-bin.jar * b: 总结 * JDBC是java提供给开发人员的一套操作数据库的接口 * 数据库驱动就是实现该接口的实现类 02JDBC原理 * A: JDBC原理 * a: 描述 * Java提供访问数据库规范称为JDBC,而生产厂商提供规范的实现类称为驱动 * DBC是接口,驱动是接口的实现,没有驱动将无法完成数据库连接,从而不能操作数据库! 每个数据库厂商都需要提供自己的驱动,用来连接自己公司的数据库,也就是说驱动一般都由数据库生成厂商提供。 * 图解见 03准备数据 * A: 准备数据

EasyCode实现数据库到Swagger全自动化

a 夏天 提交于 2019-12-22 12:33:31
简介 EasyCode是基于IntelliJ IDEA开发的代码生成插件,通过自定义生成模板可以完成定制化的 Mapper Service Controller 生成,结合数据库 Comment还可以实现从数据库到 Swagger 的一键配置,非常的强大与方便,项目地址: EasyCode--码云 这里推荐大家使用 安装 和一般的Idea插件安装方式一样,点击 File -> Setting -> Plugins 搜索 EasyCode 点击 Install 安装即可,安装之后需要重启,当然如果是Idea最新的2019.3版本支持插件热安装就不需要重启了。 连接数据库 安装之后需要使用Idea连接数据库,在Idea的右侧有个DataBase选项卡,点击之后选择对应的数据库。这边我使用的是 Mysql 数据库 配置好连接名称,连接路径,账号密码和数据库测试连接,测试通过后点击OK,就可以成功的连接到数据库,这里Idea的数据库图形化界面做的也挺好的。 配置EasyCode的模板 1. 配置作者名称 同样是 File -> Settings -> other Settings 选择 EasyCode 或者直接搜索 EasyCode 进行编辑,首先键入作者名称,这样在生成的类上面就会加上你的名字,时间等信息。 2. Type Manager 映射类型管理

4.Django|ORM模型层

牧云@^-^@ 提交于 2019-12-22 11:17:13
ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动 ORM是“对象-关系-映射”的简称。 如果进行数据库迁移,不同数据库的sql语句是有差别的,而ORM是上层封装,只需按照指定的数据库引擎就可以翻译为相对应的sql语句,便于数据库迁移。但是它的效率不高。 不需要调用sqmysql,django的上层封装; 它只能做到表这一层 sql表----->python的 类 字段------>类的属性 表记录---->python类对象 1 #sql中的表 2 3 #创建表: 4 CREATE TABLE employee( 5 id INT PRIMARY KEY auto_increment , 6 name VARCHAR (20), 7 gender BIT default 1, 8 birthday DATA , 9 department VARCHAR (20), 10 salary DECIMAL (8,2) unsigned, 11 ); 12 13 14 #sql中的表纪录 15 16 #添加一条表纪录: 17 INSERT employee (name,gender