数据库对象

Django之ORM(一)

北城以北 提交于 2019-12-03 12:14:43
ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。 ORM在业务逻辑层和数据库层之间充当了桥梁的作用。 ORM由来 让我们从O/R开始。字母O起源于"对象"(Object),而R则来自于"关系"(Relational)。 几乎所有的软件开发过程中都会涉及到对象和关系数据库。在用户层面和业务逻辑层面,我们是面向对象的。当对象的信息发生变化的时候,我们就需要把对象的信息保存在关系数据库中。 按照之前的方式来进行开发就会出现程序员会在自己的业务逻辑代码中夹杂很多SQL语句用来增加、读取、修改、删除相关数据,而这些代码通常都是极其相似或者重复的。 ORM的优势 ORM解决的主要问题是对象和关系的映射。它通常将一个类和一张表一一对应,类的每个实例对应表中的一条记录,类的每个属性对应表中的每个字段。 ORM提供了对数据库的映射,不用直接编写SQL代码,只需操作对象就能对数据库操作数据。 让软件开发人员专注于业务逻辑的处理,提高了开发效率。 ORM的劣势 ORM的缺点是会在一定程度上牺牲程序的执行效率。 ORM的操作是有限的,也就是ORM定义好的操作是可以完成的

JDBC学习

家住魔仙堡 提交于 2019-12-03 11:49:33
概念:java database connectivity,java连接数据库 JDBC实质:官方定义了操作所有关系型数据库的规则(接口)。各个数据库厂商实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。 coder--->java代码(jdbc接口)--->数据库驱动(mysql db2 oracle)--->mysql db2 oracle 快速入门 步骤 1.导入驱动jar包 2.注册驱动 3.获取数据库连接对象 Connection 4.定义sql 5.获取执行sql语句的对象statement 6.执行sql,接收结果 7.释放资源 代码实现 详解各个对象 1.DriverManager:驱动管理对象 - 功能: 1)注册驱动 static void registerDriver(Driver driver) 写代码:Class.forName("com.mysql.jdbc.Driver"); 通过查看源码得知:在com.mysql.jdbc.Driver类中存在静态代码块 static { try{ java.sql.DriverManager.registerDriver(new Driver()); }catch(SQLException E){ //... } } 注意:

数据库连接池

久未见 提交于 2019-12-03 11:46:18
上一节说了jdbc是java定义的一套操作数据库的接口;   我们使用jdbc操作数据库时需要频繁的获取数据库连接对象以及释放资源,   虽然这样也可以操作数据库,但是有很大的弊端.   因此就有了改进此方法的解决方案     就是使用池子的思想,也就是一种容器的思想     市面上有两种流行的数据库容器,也就是数据连接池     一种时c3p0数据库连接池     一种时Durid数据库连接池     这两种数据库连接池经过亲身对比,发现Durid连接池比c3p0的效率要快上不上,很自豪的是Durid数据库连接池技术是由阿里开发的.国产的     因此这里只介绍durid连接池   由于是第三方的技术因此需要导入jar包     durid需要导入两个包 以及需要properties文件,用于存放数据库配置文件     1导入包和配置文件后     使用     1使用类加载器得到配置文件的流对象     2创建properties集合对象     3使用集合对象的load()方法传入流对象     4最后创建DuridDateSourceFactory.createDatasource()方法得到DataSorce对象,需要出传入集合对象     5最后就得到一个数据库连接至对象     注意:获取数据库配置以及连接池对象的方法需要包围在静态代码块中,因为这些文件只需要读取一次

jdbc简单入门

时光总嘲笑我的痴心妄想 提交于 2019-12-03 11:08:20
jdbc的本质  :  jdbc的本质是jdk定义的一套用于操作数据的规则,jdk只定义了接口,具体实现由各个数据库厂商实现   如何根据jdbc操作数据库     1需要导包:因为具体实现是由各个数据库厂商实现的,因此要导入实现类的jar包     2此处以mysql为例       导入mysql-connector-java-5.1.37-bin.jar 这个jar包     3导入jar包之后         1使用反射得到数据库驱动对象:注册驱动             class.forName(com.jdbc.mysql.Driver);         2使用jdbc管理对象获取jdbc连接对象         Connection conn=DriverManger.getConnection()             获取连接对象需要传入3个参数           1url:数据库定位路径 jdbc:mysql//ip地址:端口号/数据库名           2username:数据库用户名           3password:数据库密码         3数据库连接对象Connection操作事务           setAutoCommint(false) :即可开始事务手动提交           commint()事务提交         

python Mysql数据库连接池组件封装(转载)

核能气质少年 提交于 2019-12-03 08:24:45
以前一直在用Java来开发,数据库连接池等都是有组件封装好的,直接使用即可,最近在尝试Python的学习,碰到了和数据库打交道的问题,和数据库打交道我们都知道,数据库连接池必不可少,不然要么就是程序异常不稳定,要么就是数据库莫名其妙挂了, 本篇博客主要是对数据库操作的简单封装,相当于一个DBHelper操作类 组件 Python中的数据库连接操作所需组件 pymysql:mysql的Python连接包 DBUtils:连接池组件 configparser:配置文件模块 mysql-connector-python:驱动包 以上模块都是必装组件,使用pip很轻松就安装 开始 组件的封装主要考虑到多种数据库、可配置的情况,因此我们的数据库相关信息不能使用硬编码的方式,需要将数据库放到配置文件中,这样和代码会有一个解耦,也不用频繁更改代码 代码 封装的类主要包含的基础方法: 提供查询的方法 分页查询的方法 插入数据 删除数据 更新数据 批量插入、删除、更新数据 配置文件 将数据库的相关信息写入db.conf配置文件中,配置文件如下: [master] # 数据库连接主机 host=192.168.0.212 # 数据库端口号 port=3306 # 用户名 user=root # 密码 password=123456 # 数据库名称 database=test # 数据库连接池最大连接数

java面试小结——框架(hibernate、MyBatis、spring、Spring MVC)

ε祈祈猫儿з 提交于 2019-12-03 08:16:06
Hibernate 什么是ORM 对象关系映射(Object-Relational Mapping,简称ORM)是一种为了解决程序的面向对象模型与数据库的关系模型互不匹配问题的技术;简单的说,ORM是通过使用描述对象和数据库之间映射的元数据(在Java中可以用XML或者是注解),将程序中的对象自动持久化到关系数据库中或者将关系数据库表中的行转换成Java对象,其本质上就是将数据从一种形式转换到另外一种形式。 持久层设计要考虑的问题有哪些?你用过的持久层框架有哪些? 所谓”持久”就是将数据保存到可掉电式存储设备中以便今后使用,简单的说,就是将内存中的数据保存到关系型数据库、文件系统、消息队列等提供持久化支持的设备中。持久层就是系统中专注于实现数据持久化的相对独立的层面。 持久层设计的目标包括: - 数据存储逻辑的分离,提供抽象化的数据访问接口。 - 数据访问底层实现的分离,可以在不修改代码的情况下切换底层实现。 - 资源管理和调度的分离,在数据访问层实现统一的资源调度(如缓存机制)。 - 数据抽象,提供更面向对象的数据操作。 持久层框架有: - Hibernate - MyBatis - TopLink - Guzz - jOOQ - Spring Data - ActiveJDBC Hibernate中SessionFactory是线程安全的吗?Session是线程安全的吗

从JDBC到hibernate再到mybatis之路

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-03 08:14:39
一、传统的JDBC编程   在java开发中,以前都是通过JDBC(Java Data Base Connectivity)与数据库打交道的,至少在ORM(Object Relational Mapping)框架没出现之前是这样,目前常用的ORM框架有JPA、hibernate、mybatis、spring jdbc等,我一开始也是使用JDBC编程,后面开始使用hibernate,有一次开发一个CRM管理系统使用的是Spring JDBC操作数据库,但个人还是不太喜欢这个框架,本人目前使用的最多还是通过mybatis操作数据库,尽管我现在使用的是Spring boot开发,继承了JPA来操作数据库,但是实体类和dao、service、controller层的基本CRUD操作还是通过hibernate代码工具自动生成的,其他操作都是通过mybatis自己编写SQL语句来操作的,因此本文只提JDBC到hibernate再到mybatis的一个过程。 1、什么是JDBC   JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,是用Java语言编写的类和接口组成的,可以为多种关系型数据库提供统一访问的接口。JDBC提供了一种基准,说白了,也就是sun公司为各大数据库厂商的关系型数据库连接java所制定的规范

orm相关操作

孤街浪徒 提交于 2019-12-03 07:33:16
1. ORM介绍 1. ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。 ORM在业务逻辑层和数据库层之间充当了桥梁的作用。 2. 优势 ORM解决的主要问题是对象和关系的映射。它通常将一个类和一张表一一对应,类的每个实例对应表中的一条记录,类的每个属性对应表中的每个字段。 ORM提供了对数据库的映射,不用直接编写SQL代码,只需操作对象就能对数据库操作数据。 让软件开发人员专注于业务逻辑的处理,提高了开发效率。 3. 缺点 ORM的缺点是会在一定程度上牺牲程序的执行效率。 ORM的操作是有限的,也就是ORM定义好的操作是可以完成的,一些复杂的查询操作是完成不了。 ORM用多了SQL语句就不会写了,关系数据库相关技能退化... 2. django中的orm 1. 常用字段 AutoField 自增 primary_key=True主键 CharField # 字符串 字符类型,必须提供max_length参数。max_length表示字符的长度。 TextField # 大字符串 文本类型 IntegerField # 整形 一个整数类型。数值的范围是 -2147483648

Mybatis面试题一

半腔热情 提交于 2019-12-03 07:26:41
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

SQL Server 默认跟踪(Default Trace)介绍使用

六眼飞鱼酱① 提交于 2019-12-03 06:29:32
背景 当数据库的表、存储过程经常别修改,当这些修改造成BUG的时候,很多开发都不承认是他们干的,那我们有没办法找出谁干的呢?   SQL Server有Default Trace默认跟踪,数据库记录信息到log.trc文件,可以查看trace_event_id,46表示Create对象(Object:Created),47表示Drop对象(Object:Deleted),93表示日志文件自动增长(Log File Auto Grow),164表示Alter对象(Object:Altered),20表示错误日志(Audit Login Failed)。   虽然可以通过上面的方式找到相关的操作,但是它有两个缺点:     1) log.trc文件是滚动更新文件,所有有可能会被系统删除,你找不了太久的数据;     2) 有些操作你可能是后知后觉,出了问题才会去找问题,我们应该主动去监控这些DDL; 查看默认跟踪信息(Default Trace) Trace作为一个很好的数据库追踪工具,在SQL Server 2005中便集成到系统功能中去,并且默认是开启的,当然我们也可以手动的关掉它,它位于sp_config配置参数中,我们可以通过以下语句查看: select * from sys.configurations where configuration_id = 1568