数据库对象

连接池(深入 J2EE 的连接合用)

不羁的心 提交于 2019-11-29 09:56:11
Java 2 Enterprise Edition (J2EE) 规范提供了实现高度可伸缩、可靠和可用的电子商务应用的分布式基于服务的体系结构。通常,J2EE 应用体系结构与模型-视图-控制器 (MVC) 框架相对应 -- 资源库/外部系统资源支持域模型(模型),JSP/Servlet 管理显示(视图),而 EJB 处理商业逻辑(控制器)。 通过服务器端所有三层中的组件实现一个典型的电子商务应用用例。考虑到用户交互数量的庞大(对于面对客户的应用,有上百万个),需要优化地共享有限的服务器端资源。这类资源可能包括数据库、消息队列、目录、企业系统 (SAP、CICS) 等等,它们中的每一个都可以由使用代表资源访问点的连接对象的应用来访问。管理对那些共享资源的访问对于满足 J2EE 应用的高性能需求来说至关重要。 连接合用是由数据库供应商倡导的技术,其目的是允许客户机共享一组高速缓存的连接对象,这些对象提供对数据库资源的访问。在本文中,我分析了 J2EE 环境中服务器端资源(例如数据库、消息队列、目录和企业系统)的连接合用。 为何合用资源连接? 考虑一下 代码示例 ,其中,EJB 使用 JDBC 1.0、 不使用 连接合用来访问数据库资源。 很明显,该示例的主要问题是连接的打开和关闭。考虑到实体 bean 是共享组件,因此,对每个客户机请求,都要进行几次获取和释放数据库连接的操作。 从图

SSH常识问题

久未见 提交于 2019-11-29 09:25:38
Struts2 1、为什么每次请求都要创建一个Action对象? 是出于对线程安全的考虑,每次请求的时候都会创建一个action的实例,这样会保证线程的安全。Struts1只是在第一次请求的时候创建一个action的实例,以后每次相同的请求都直接从内存中去读取,它是单例模式,多线程情况下不安全。 2、ModelDriven拦截器的配置中refreshModelBeforeResult解决了什么? 更新ValueStack中的model对象,先把旧的model对象从ValueStack中移除,然后再把新的model对象压进ValueStack! 官方解释: set to true if you want the model to be refreshed on the value stack after action execution and before result execution. The setting is useful if you want to change the model instance during the action execution phase, like when loading it from the data layer. This will result in getModel() being called at least twice

用SqlDataReader返回多个结果集

时光毁灭记忆、已成空白 提交于 2019-11-29 08:55:20
1 using System; 2 using System.Data; 3 using System.Data.SqlClient; 4 5 namespace Northwind 6 { 7 class Program 8 { 9 static void Main(string[] args) 10 { 11 SqlConnection sqlConn = null; 12 SqlCommand sqlCmd = null; 13 SqlDataReader sqlDR = null; 14 try 15 { 16 //创建连接对象,使用集成安全方式连接,更安全 17 sqlConn = new SqlConnection(@"data source=localhost; 18 Integrated Security=SSPI;Initial Catalog=northwind"); 19 //创建命令对象,参数1是存储过程名 20 string strSql = @"select categoryid, categoryname from categories;" 21 + @"select employeeId, lastname from employees"; 22 sqlCmd = new SqlCommand(strSql, sqlConn); 23 24 /

JDBC入门

ε祈祈猫儿з 提交于 2019-11-29 08:37:21
一、概述 1、JDBC本质 概念:Java DataBase Connectivity Java数据库连接,Java语言操作数据库; JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。 二、JDBC快速入门 1、步骤 * 步骤: 1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar 1.在项目下创建libs目录,复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下 2.右键libs目录-->Add As Library 2. 注册驱动 3. 获取数据库连接对象 Connection 4. 定义sql 5. 获取执行sql语句的对象 Statement 6. 执行sql,接受返回结果 7. 处理结果 8. 释放资源 2、代码 package cn.itcast.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class JdbcDemo1 { public static void

42、C#:EF框架的:导航属性,加载记录追踪方式(MergeOption),添加内存内容到新上下文(Attach)

北城余情 提交于 2019-11-29 08:28:01
EF很强大,知道一些用法可以很便利地开发。 1.导航属性 --- 主/子表操作 比如apply为父表(主键作为子表的外键(之一)),progress作为子表,那么apply.progress.add(new progress{ ...,....})的方式就是使用apply对象来对子表进行新增操作。这种新增操作无需添加子表的外键(也就是apply的主键),会默认添加,且与子表的主键是否是此外键无关。 注:apply为表对应的变量,并不是表本身名称,progress也是如此。 2.MergeOption --- 设置从数据库加载记录对象后对这些记录对象的追踪方式 context.windopenapplies.MergeOption = MergeOption.NoTracking是将从数据库中捞取的记录对象加载到内存后,对这些记录对象不再追踪,相当于对这些记录对象关闭了数据库,这样可以提升性能,当然,这种做法仅限于查询。如果有增删改,就不能这样,会造成context.savechange()的时候无法更新到数据库中,增删改的时候不用写这句话,直接使用默认设置MergeOption.AppendOnly即可。 注:此枚举dll:System.Data.Entity.dll 3.Attach --- 将非当前上下文内存内容加载到当前上下文中 context.windopenapplies

ADO.NET

假如想象 提交于 2019-11-29 08:21:53
ADO.NET ADO.NET是.NET框架中的重要组件,主要用于完成C#应用程序访问数据库。 ADO.NET使用的命名空间 System.Data, DataTable,DataSet,DataRow,DataColumn,DataRelation,Constraint,DataColumnMapping,DataTableMapping System.Data.Coummon 各种数据访问类的基类和接口 System.Data.SqlClient 对Sql Server进行操作的数据访问类 ADO.NET核心对象 SqlConnection:数据库连接器 SqlCommand:数据库命名对象 SqlDataReader:数据读取器 SqlDataAdapter:数据适配器,填充DataSet DataSet/DataTable:数据容器 SqlCommandBuilder:生存SQL命令 SqlParameter:为存储过程定义参数 SqlTransaction:数据库事物 C#连接数据库 Connection连接对象 Connection对象也称为数据库连接对象,Connection对象的功能是负责对数据源的连接。所有Connection对象的基类都是DbConnection类。 创建连接字符串 SQL Server链接字符串 标准安全连接 Data Source=.

自己总结的一些三大框架面试题

夙愿已清 提交于 2019-11-29 06:16:43
Struts 谈谈你对Struts的理解。 答: 1.struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类。我们可以在web.xml文件中将符合某种特征的所有请求交给这个Servlet处理,这个Servlet再参照一个配置文件(通常为/WEB-INF/struts-config.xml)将各个请求分别分配给不同的action去处理。 一个扩展知识点:struts的配置文件可以有多个,可以按模块配置各自的配置文件,这样可以防止配置文件的过度膨胀; 2.ActionServlet把请求交给action去处理之前,会将请求参数封装成一个formbean对象(就是一个java类,这个类中的每个属性对应一个请求参数),封装成一个什么样的formbean对象呢?看配置文件。 3.要说明的是, ActionServlet把formbean对象传递给action的execute方法之前,可能会调用formbean的validate方法进行校验,只有校验通过后才将这个formbean对象传递给action的execute方法,否则,它将返回一个错误页面,这个错误页面由input属性指定,(看配置文件)作者为什么将这里命名为input属性,而不是error属性

JavaEE三大框架ssh

狂风中的少年 提交于 2019-11-29 06:13:30
JAVA中常说的三大框架指:SSH 即: Spring、Struts、Hibernate Spring: 功能强大的组件粘合济,能够将你的所有的java功能模块用配置文件的方式组合起来(还让你感觉不到spring的存在)成为一个完成的应用 Struts: 功能强大的MVC架构 Hibernate: 强大的ORM工具,然后很方便将数据库记录转化为java的实体实例,将java的实体实例很容易的保存到数据库中,如果你不需要很复杂的数据库访问,利用它你根本就不用了解数据库的细节 JavaEE三大框架 Hibernate Hibernate 是(orm)对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装, Hibernate 是一个开源代码的对象关系映射框架,是强大的 ORM 工具,通过 mapping 的标签来做文件映射,方便将数据库记录转化为 java 的实体实例,将 java 的实体实例很容易的保存到数据库中。 简化jdbc操作,可以自动把从数据库查询到的结果封装成对象 基于jdbc的主流持久化框架 优点 :优秀的Java 持久化层解决方案 主流的对象—关系映射工具 简化了JDBC 繁琐的编码 将数据库的连接信息都存放在配置文件 表单的 CURD :创建( Create )、更新( Update )、读取( Read )和删除( Delete )操作 查询语言 ps

JDBC--工具类

被刻印的时光 ゝ 提交于 2019-11-29 05:47:10
一、概述:   JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。是Java访问数据库的标准规范   JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。   DBC需要连接驱动,驱动是两个设备要进行通信,满足一定通信数据格式,数据格式由设备提供商规定,设备提供商为设备提供驱动软件,通过软件可以与该设备进行通信。 二、原理:   Java提供访问数据库规范称为JDBC,而生产厂商提供规范的实现类称为驱动。   JDBC是接口,驱动是接口的实现类,没有驱动将无法完成数据库连接,从而不能操作数据库!每个数据库厂商都需要提供自己的驱动,用来连接自己公司的数据库,也就是说驱动一般都由数据库生成厂商提供。 三、开发步骤:   1、注册驱动.       告知JVM使用的是哪一个数据库的驱动   2、获得连接.       使用JDBC中的类,完成对MySQL数据库的连接   3、获得语句执行平台       通过连接对象获取对SQL语句的执行者对象   4、执行sql语句       使用执行者对象,向数据库执行SQL语句 获取到数据库的执行后的结果   5、处理结果   6、释放资源.    

drf框架(三)

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-29 04:36:58
序列化组件 Serializer(偏底层,了解) ModelSerializer(重点) ListModelSerializer(辅助群改) 1.Serializer的运用 序列化器的使用 序列化器的使用分两个阶段:   1.在客户端请求时:使用序列化器可以完成对数据的反序列化(就是前段往后端传递数据,反序列化之后保存数据)   2.在服务器响应时,使用序列化器可以完成对数据的序列化(服务器取出数据,序列化之后往前段发送展示) 序列化使用流程: 基本使用:   1.先查询出一个用户对象 from models import user user = User.object.get(id=2)   2.构造序列化器对象 from user.serializers import UserSerializer user_ser = Userserializer(user) #放入查询出的user对象   3.获取序列化对象 通过data属性可以获取序列化后的数据 上面查出来的user_ser是一个serializer对象,需要取出具体的数据传给前端,所有要用到 user_ser.data取出具体数据   4.如果要被序列化的数据是包含多条数据的(也可以说被[ ]嵌套的,不管是多条还是单条),需要添加many=True参数 user = models.User.objects.all()