jooq权限配置_将jOOQ与Spring结合使用:配置

jooq权限配置

我遇到了由ORM引起的性能问题。 尽管我不得不承认大多数这些问题确实是由您造成的,但是我开始认为在只读操作中使用ORM是不值得的。

我开始寻找实现这些操作的替代方法。

这就是我遇到jOOQ的方式 ,它指出:

jOOQ从您的数据库生成Java代码,并允许您通过其流畅的API构建类型安全SQL查询。

这看起来非常有趣,因此我决定试一试,并与您分享我的发现。

这篇博客文章是“将jOOQ与Spring结合使用”系列的第一部分,它描述了如何获取所需的依赖关系以及如何配置应用程序的应用程序上下文。

让我们开始吧。

使用Maven获取所需的依赖关系

我们的应用程序的依赖项是:

  • Spring Framework 3.2.6。 此时,我们的示例使用aopbeancorecontextcontext-supportjdbctx模块。
  • cglib 3.1。
  • BoneCP 0.8.0。 我们使用BoneCP作为示例应用程序的连接池。
  • jOOQ 3.2.2。
  • H2 1.3.174。 我们使用H2作为示例应用程序的数据库。

如果您想获得有关Spring Framework模块的更多信息,请阅读Spring Framework Reference Documentation的1.2节 。

该示例应用程序使用Spring Framework 3.2.6而非4.0的原因是,目前spring-test-dbunit与Spring Framework 4.0不兼容 。

pom.xml文件的相关部分如下所示:

<dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>3.2.6.RELEASE</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>3.2.6.RELEASE</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>3.2.6.RELEASE</version>
</Dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>3.2.6.RELEASE</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>3.2.6.RELEASE</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>3.2.6.RELEASE</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>3.2.6.RELEASE</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>3.2.6.RELEASE</version>
</dependency><dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>3.1</version>
</dependency><dependency><groupId>com.jolbox</groupId><artifactId>bonecp</artifactId><version>0.8.0.RELEASE</version>
</dependency><dependency><groupId>org.jooq</groupId><artifactId>jooq</artifactId><version>3.2.2</version>
</dependency><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>1.3.174</version>
</dependency>
  • 该博客文章的示例应用程序还具有其他依赖性。 通过查看pom.xml文件,可以看到完整的依赖项列表。

让我们继续研究如何将jOOQ抛出的异常转换为Spring DataAccessExceptions

将jOOQ异常转换为Spring DataAccessException

为什么我们要将jOOQ抛出的异常转换为Spring DataAccessExceptions

这样做的一个原因是我们希望我们的集成工作与Spring框架的DAO支持相同。 这种支持的一个基本部分是一致的异常层次结构 :

Spring提供了从技术特定的异常(如SQLException)到其自己的异常类层次结构(以DataAccessException作为根异常)的便捷转换。 这些异常包装了原始异常,因此永远不会冒任何可能丢失任何错误信息的风险。

换句话说,如果我们希望我们的应用程序是“好公民”,那么确保我们的配置将jOOQ抛出的异常转换为Spring DataAccessExceptions是有意义的。

我们可以按照以下步骤创建提供此功能的组件:

  1. 创建一个JOOQToSpringExceptionTransformer类,该类扩展了DefaultExecuteListener类。 DefaultExecuteListener类是ExecuteListener接口的公共默认实现,该接口为单个查询执行的不同生命周期事件提供侦听器方法。
  2. 重写DefaultExecuteListener类的exception(ExecuteContext ctx)方法 。 如果在执行生命周期的任何时刻引发异常,则调用此方法。 通过执行以下步骤来实现该方法:
    1. 从jOOQ配置中获取一个SQLDialect对象。
    2. 通过遵循以下规则创建一个实现SQLExceptionTranslator接口的对象:
      1. 如果找到已配置SQL方言,请创建一个新的SQLErrorCodeSQLExceptionTranslator对象,并将SQL方言的名称作为构造函数参数传递。 此类通过分析供应商特定的错误代码来“选择”正确的DataAccessException
      2. 如果找不到SQL方言,请创建一个新的SQLStateSQLExceptionTranslator对象。 此类通过分析存储到SQLExceptionSQL状态来“选择”正确的DataAccessException
    3. 通过使用创建SQLExceptionTranslator对象创建DataAccessException 对象 。
    4. 将抛出的DataAccessException转发给作为方法参数给出的ExecuteContext对象。

JOOQToSpringExceptionTransformer类的源代码如下所示:

import org.jooq.ExecuteContext;
import org.jooq.SQLDialect;
import org.jooq.impl.DefaultExecuteListener;
import org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator;
import org.springframework.jdbc.support.SQLExceptionTranslator;
import org.springframework.jdbc.support.SQLStateSQLExceptionTranslator;public class JOOQToSpringExceptionTransformer extends DefaultExecuteListener {@Overridepublic void exception(ExecuteContext ctx) {SQLDialect dialect = ctx.configuration().dialect();SQLExceptionTranslator translator = (dialect != null)? new SQLErrorCodeSQLExceptionTranslator(dialect.name()): new SQLStateSQLExceptionTranslator();ctx.exception(translator.translate("jOOQ", ctx.sql(), ctx.sqlException()));}
}

这不是我的主意 。 我从亚当·泽尔(Adam Zell)的要旨(Gist)中得到了这个想法。

补充阅读:

  • jOOQ用户手册的第4.2.5节“自定义ExecuteListeners”
  • Spring框架参考文档的第14.2.3节“ SQLExceptionTranslator”

我们的工作还没有完成。 让我们放在一起,通过配置示例应用程序的应用程序上下文来完成我们的工作。

配置应用程序上下文

本节说明如何使用Java配置来配置应用程序的应用程序上下文。

让我们开始创建一个属性文件,其中包含示例应用程序的配置。

实际应用程序的构建过程基于Maven配置文件。 这确保了我们可以在不同的环境中使用不同的配置。 您可以阅读我的博客文章“ 使用Maven创建配置文件特定的配置文件”,以获取有关此内容的更多信息。

创建属性文件

我们可以按照以下步骤创建属性文件:

  1. 配置数据库连接。 我们需要配置JDBC驱动程序类,JDBC URL,数据库用户的用户名和数据库用户的密码。
  2. 配置使用SQL方言的名称。
  3. 配置创建示例应用程序数据库SQL脚本的名称(这是一个可选步骤,如果您的应用程序不使用嵌入式数据库,则不需要此步骤)。

application.properties文件如下所示:

#Database Configuration
db.driver=org.h2.Driver
db.url=jdbc:h2:target/jooq-example
db.username=sa
db.password=#jOOQ Configuration
jooq.sql.dialect=H2#DB Schema
db.schema.script=schema.sql
  • SQLDialect枚举的Javadoc指定jOOQ支持的数据库方言列表。

让我们继续研究如何使用Java配置来配置应用程序的应用程序上下文。

创建配置类

我们可以按照以下步骤配置应用程序的应用程序上下文:

  1. 创建一个PersistenceContext类。
  2. 通过使用@Configuration批注注释该类,确保将创建的类识别为配置类。
  3. 确保在组件扫描期间找到我们应用程序的jOOQ存储库。 我们可以通过使用@ComponentScan注释对配置类进行注释来做到这一点。
  4. 通过使用@EnableTransactionManagement注释对配置类进行注释,以启用注释驱动的事务管理。
  5. 确保从类路径中找到的application.properties文件中加载了我们应用程序的配置。 我们可以通过使用@PropertySource注释对配置类进行注释来执行此操作。
  6. 在配置类中添加一个Environment字段,并使用@Autowired注释对该字段进行注释。 我们使用Environment对象获取从application.properties文件加载的配置属性的属性值。
  7. 配置数据源 bean。 因为我们的应用程序使用BoneCP,所以我们创建了一个BoneCPDataSource对象作为我们的数据源。
  8. 配置LazyConnectionDataSourceProxy bean。 该bean确保延迟获取数据库连接(即,在创建第一条语句时)。
  9. 配置TransactionAwareDataSourceProxy bean。 该bean确保所有JDBC连接都知道Spring管理的事务。 换句话说,JDBC连接参与线程绑定的事务。
  10. 配置DataSourceTransactionManager bean。 创建新的DataSourceTransactionManager对象时,必须将LazyConnectionDataSourceProxy Bean作为构造函数参数传递
  11. 配置DataSourceConnectionProvider bean。 jOOQ将从作为构造函数参数给出的数据源中获取使用的连接。 创建新的DataSourceConnectionProvider对象时,必须将TransactionAwareDataSourceProxy bean作为构造函数参数传递 。 这样可以确保创建的jOOQ查询参与Spring管理的事务。
  12. 配置JOOQToSpringExceptionTransformer bean。
  13. 配置DefaultConfiguration bean。 此类是Configuration接口的默认实现,我们可以使用它来配置jOOQ。 我们必须配置三件事:
    1. 我们必须设置的ConnectionProvider,这是用来获取和释放数据库连接。
    2. 我们必须配置自定义执行侦听器 。 换句话说,我们必须将JOOQToSpringExceptionTransformer bean添加到创建的DefaultConfiguration对象中。 这确保了jOOQ抛出的异常被转换为Spring DataAccessExceptions
    3. 我们必须配置使用SQL方言。
  14. 配置DefaultDSLContext bean。 在使用jOOQ创建数据库查询时,将使用此bean。
  15. 配置DataSourceInitializer bean。 启动应用程序时,我们使用此bean创建H2数据库的数据库架构(如果您不使用嵌入式数据库,则不必配置此bean)。

PersistenceContext类的源代码如下所示:

import com.jolbox.bonecp.BoneCPDataSource;
import org.jooq.SQLDialect;
import org.jooq.impl.DataSourceConnectionProvider;
import org.jooq.impl.DefaultConfiguration;
import org.jooq.impl.DefaultDSLContext;
import org.jooq.impl.DefaultExecuteListenerProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.core.io.ClassPathResource;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy;
import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;
import org.springframework.jdbc.datasource.init.DataSourceInitializer;
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
import org.springframework.transaction.annotation.EnableTransactionManagement;import javax.sql.DataSource;@Configuration
@ComponentScan({"net.petrikainulainen.spring.jooq.todo"})
@EnableTransactionManagement
@PropertySource("classpath:application.properties")
public class PersistenceContext {@Autowiredprivate Environment env;@Bean(destroyMethod = "close")public DataSource dataSource() {BoneCPDataSource dataSource = new BoneCPDataSource();dataSource.setDriverClass(env.getRequiredProperty("db.driver"));dataSource.setJdbcUrl(env.getRequiredProperty("db.url"));dataSource.setUsername(env.getRequiredProperty("db.username"));dataSource.setPassword(env.getRequiredProperty("db.password"));return dataSource;}@Beanpublic LazyConnectionDataSourceProxy lazyConnectionDataSource() {return new LazyConnectionDataSourceProxy(dataSource());}@Beanpublic TransactionAwareDataSourceProxy transactionAwareDataSource() {return new TransactionAwareDataSourceProxy(lazyConnectionDataSource());}@Beanpublic DataSourceTransactionManager transactionManager() {return new DataSourceTransactionManager(lazyConnectionDataSource());}@Beanpublic DataSourceConnectionProvider connectionProvider() {return new DataSourceConnectionProvider(transactionAwareDataSource());}@Beanpublic JOOQToSpringExceptionTransformer jooqToSpringExceptionTransformer() {return new JOOQToSpringExceptionTransformer();}@Beanpublic DefaultConfiguration configuration() {DefaultConfiguration jooqConfiguration = new DefaultConfiguration();jooqConfiguration.set(connectionProvider());jooqConfiguration.set(new DefaultExecuteListenerProvider(jooqToSpringExceptionTransformer()));String sqlDialectName = env.getRequiredProperty("jooq.sql.dialect");SQLDialect dialect = SQLDialect.valueOf(sqlDialectName);jooqConfiguration.set(dialect);return jooqConfiguration;}@Beanpublic DefaultDSLContext dsl() {return new DefaultDSLContext(configuration());}@Beanpublic DataSourceInitializer dataSourceInitializer() {DataSourceInitializer initializer = new DataSourceInitializer();initializer.setDataSource(dataSource());ResourceDatabasePopulator populator = new ResourceDatabasePopulator();populator.addScript(new ClassPathResource(env.getRequiredProperty("db.schema.script")));initializer.setDatabasePopulator(populator);return initializer;}
}

如果要使用XML配置文件配置应用程序上下文,则示例应用程序也具有有效的XML配置文件 。

学分:

  • 该配置基于jOOQ用户手册的3.4.3节 。
  • Sergey Epik发布的消息帮助我弄清楚了如何向jOOQ配置添加自定义ExecuteListeners。
  • Peter Ertl给了我一个使用LazyConnectionDataSourceProxy的想法。

我们如何知道此配置有效? 这是一个好问题。 我们将在下一节中讨论。

这真的有效吗?

当我开始研究如何确保用jOOQ创建的数据库查询参与Spring管理的事务时,我注意到这不是一个容易解决的问题 。

这篇博客文章的示例应用程序具有一些集成测试,这些测试可以确保事务(提交和回滚)在非常简单的情况下正常工作。 但是,在使用此博客文章中描述的解决方案时,我们必须考虑两件事:

1.使用jOOQ创建的所有数据库查询必须在事务内执行。

TransactionAwareDataSourceProxy类的Javadoc指出:

委托DataSourceUtils自动参与线程绑定的事务,例如由DataSourceTransactionManager管理。 返回的Connection上的getConnection调用和close调用将在事务中正常运行,即始终在事务Connection上运行。 如果不在事务内,则将应用正常的DataSource行为。

换句话说,如果您执行多个复杂的操作而没有事务,则jOOQ将为每个操作使用不同的连接。 这可能会导致竞赛条件错误。

在阅读Ben Manes撰写的这篇评论时,我注意到了这个问题。

2. Javadoc不建议使用TransactionAwareDataSourceProxy

TransactionAwareDataSourceProxy类的Javadoc具有如下部分:

与J2EE / JTA环境中的JDBC代码类似,该代理允许数据访问代码与普通JDBC API一起使用,并且仍参与Spring管理的事务。 但是,如果可能,即使没有目标DataSource的代理,也可以使用Spring的DataSourceUtilsJdbcTemplate或JDBC操作对象来获取事务参与,从而避免了首先定义此类代理的麻烦。

这是一个非常模糊的评论,因为它没有解释为什么我们不应该使用它。 Adam Zell建议 ,由于该类使用反射,因此使用反射可能会导致性能问题。

如果您遇到性能问题,则可能要使用
亚当·泽尔的要点 。

摘要

现在,我们已经成功配置了示例应用程序的应用程序上下文。 本教程教了四件事:

  • 我们了解了如何使用Maven获得所需的依赖关系。
  • 我们学习了如何将jOOQ引发的异常转换为Spring DataAccessExceptions
  • 我们学习了如何配置使用jOOQ和Spring的应用程序的应用程序上下文。
  • 当我们使用此博客文章中描述的方法时,我们快速考虑了必须考虑的事项。

本教程的下一部分描述了我们可以使用jOOQ的代码生成支持 。

Github上提供了此博客文章的示例应用程序。

补充阅读:

Vlad Mihalcea也写了有关jOOQ的文章 。 查看他的博客!

参考: 将jOOQ与Spring结合使用:来自Petri Kainulainen博客的JCG合作伙伴 Petri Kainulainen进行的配置 。

翻译自: https://www.javacodegeeks.com/2014/01/using-jooq-with-spring-configuration.html

jooq权限配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344403.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【渝粤题库】陕西师范大学600001物理化学(上) 作业(专升本)

《物理化学&#xff08;上&#xff09;》作业 一.单选题 1.下列物理量中属于强度性质的是 A. H B. S C. p D. G 2.298.2K时&#xff0c;1mol的氧气&#xff08;可视为理想气体&#xff09;经等温可逆膨胀后&#xff0c;体积胀大10倍&#xff0c;对于该过程来说&#xff0c; 其Δ…

employee.java,Java基础系列(六):对象与类(上)

概述类(class)是构造对象的模板。由类构造对象的过程称为创建类的实例。封装从形式上看&#xff0c;封装是将数据和行为组合在一个包中&#xff0c;并对对象的使用者隐藏了数据的实现方式。对象中的数据称为实例域&#xff0c;而操纵数据的过程称之为方法。对于每个特定的类实例…

【渝粤题库】陕西师范大学800007 地理信息系统

《地理信息系统》作业 一&#xff0e;名词解释 &#xff11;&#xff0e;TIN       2 .缓冲区分析 &#xff13;&#xff0e;元数据 &#xff14;. 地理信息系统 &#xff15;&#xff0e;空间数据库  &#xff16;&#xff0e;拓扑关系 &#xff17;&#xff0e;矢量结…

国家开放大学2021春1080工程数学(本)题目

教育 教育 试卷代号&#xff1a; 1080 2021年春季学期期末统一考试 工程数学&#xff08;本&#xff09; 试题 2021年7月 一、单项选择题&#xff08;每小题3分&#xff0c;共15分&#xff09; 1.设方阵可逆&#xff0c;则下列命题中不正确的是( ). A. B.线性方程组必有非零解…

弹簧启动执行器教程

朋友您好&#xff0c;在本教程中&#xff0c;我们将学习弹簧执行器及其所有功能。 1.什么是弹簧执行器&#xff1f; 2.如何在Maven项目或Gradle项目中添加弹簧执行器&#xff1f; 3.创建一个具有Spring Actuator依赖项的Spring Boot项目。 4.使用弹簧执行器端点监视应用程序…

matlab 大于并且小于,Matlab:将大于(小于)1(-1)的元素转换为1(-1)的序列

更新&#xff1a;我做了一些测试,Jonas的解决方案对于一系列不同大小的输入向量来说是最快的.特别是,正如angainor指出的那样,解决方案可以很好地扩展到大尺寸 – 这是一个重要的测试,因为通常是大尺寸的问题促使我们在SO上提出这些问题.感谢Jonas和tmpearce的解决方案 – 基于…

matlab 里try用法,matlab在整个程序(全局)中使用try-catch来报告错误

我的matlab程序是一个多窗口程序化GUI。我已经实现了一个报告系统&#xff0c;所以当遇到错误时&#xff0c;它会调用我编写的函数generateReport.m&#xff0c;它发送一个带有一些日志和状态信息的电子邮件&#xff0c;然后继续执行。为了实现这一点&#xff0c;我在每个单独的…

【渝粤题库】陕西师范大学200741概率论与数理统计作业(高起本、专升本)

《概率论与数理统计》作业 一、填空题 1&#xff0e;设有两门高射炮&#xff0c;每一门击中飞机的概率都是0.6&#xff0c;则同时发射一发炮弹而击中飞机的概率为   .若有一架敌机入侵领空&#xff0c;欲以99%以上的概率及中它&#xff0c;至少需 &#xff3f;&#xff3f;&…

php xls 邮件,PHPMailer发送邮件

PHPMailer是一个封装好的PHP邮件发送类&#xff0c;支持发送HTML内容的电子邮件&#xff0c;以及图片附件&#xff0c;前提要设置好邮件服务器就能实现邮件发送功能。HTML首先我们先放置一个收件箱的输入框和一个发送邮件按钮&#xff1a;收件人&#xff1a;jQuery$(function()…

activiti自定义_在Activiti中执行自定义查询

activiti自定义&#xff08;这可能最终会出现在Activiti 5.15版本的用户指南中&#xff0c;但是我已经想要共享它了&#xff09; Activiti API允许使用高级API与数据库进行交互。 例如&#xff0c;对于检索数据&#xff0c;查询API和本机查询API的用法很强大。 但是&#xff0…

【渝粤题库】陕西师范大学201371 国际法学作业

《国际法》作业 一、填空题 1&#xff0e;&#xff08; &#xff09;和&#xff08; &#xff09; 是国际法的主要渊源。 2&#xff0e;现代国际法主体应包括&#xff1a;国家、&#xff08; &#xff09;和&#xff08; &#xff09; 3&#xff0e;国家领土包括&#xff1a;领…

【渝粤题库】陕西师范大学201901 中国古代文学(二) 作业(高起专)

《中国古代文学&#xff08;二&#xff09;》【高起专】作业 一、单选题 1、提出“大凡物不得其平则鸣”这一著名观点的作家是&#xff08; &#xff09; A 李白 B 杜甫 C 韩愈 D 白居易 2、韦庄写有一首涉及黄巢起义的长篇叙事诗&#xff0c;题目叫做&#xff08; &#xff09…

php实际开发过程,4.工作实际开发应用

**本文以thinkphp5中扩展 think-queue的应用为实例**1.安装think-queue 扩展composer install topthink/think-queue2.index模块下新建控制器,调用消息队列入队~~~namespace app\index\controller;/*** 文件路径&#xff1a; \application\index\controller\JobTest.php* 该控制…

引导性GCP:带有Google Cloud Pub / Sub的Spring Cloud Stream

我最近在Sprint Central的工程博客上阅读了Josh Long的Bootiful GCP系列 &#xff0c;特别喜欢关于使用Google Cloud的Pub / Sub的第四部分 。 我受到该系列的启发&#xff0c;同时我还在为我的一个新项目评估Spring Cloud Stream。 我以为&#xff0c;我会继续讨论乔希&#x…

【渝粤题库】陕西师范大学202241 金融市场学 作业(专升本)

《金融市场学》作业 一 名词解释 1&#xff0e;货币头寸   2&#xff0e;金边债券   3&#xff0e;二板市场 4&#xff0e;金融市场 5&#xff0e;投资基金 6&#xff0e;系统风险 7&#xff0e;外汇市场 8&#xff0e;货币市场共同基金 9&#xff0e;衍生证券 10&#x…

【渝粤题库】陕西师范大学210002儿童文学 作业(高起专、高起本、专升本)

《儿童文学》作业 单选题 1、构成作品音响效果的因素是象声词、韵律和&#xff08; &#xff09;。 2、幼儿文学作品用词的总要求是&#xff1a;具体、浅显、充分发挥&#xff08; &#xff09;作用 3、在儿童文学创作艺术手法的运用中应注意心理描写和&#xff08; &#xff…

db2 迁移mysql,mysql 迁移 db2

我该怎样迁移数据呢?如果用于非 IBM 平台的数据库模式与用于 DB2 的模式相同(或非常类似),那么可 以通过使用 IBM Migration Toolkit (MTK) 来完成数据迁移。因此......4. . 迁移应用程序 1.不同数据库的对象区别 Mysql/Sql Server->oracle 自增长 vs 序列 Oracle->DB2 …

jdbc和jdbc驱动_JDBC布尔兼容性列表

jdbc和jdbc驱动有趣的是&#xff0c;布尔类型只是在SQL标准后期才引入&#xff0c;即SQL&#xff1a;1999 。 即使在今天&#xff0c;并非所有数据库本身都支持BOOLEAN或BIT类型。 最重要的是&#xff0c;我们仍然可以在Oracle中等待一段时间。 这是2002年以来关于该主题的“问…

【渝粤题库】陕西师范大学300008 历史教学论

《历史教学论》作业 一、名词解释 1&#xff0e;历史课程标准 2&#xff0e;综合课型 3&#xff0e;讲述法 4&#xff0e;历史基础知识 5&#xff0e;历史教材 6&#xff0e;历史概念 7&#xff0e;复习课 8&#xff0e;讲解法 9&#xff0e;叙述法 10&#xff0e;绪论课 11&am…

【渝粤题库】陕西师范大学500013 物理教学论 作业(专升本)

《物理教学论》作业 一、简答题 1、中学物理教学应坚持哪些主要的教学原则&#xff1f; 2、适应新课程教学物理教师应具备怎样的智能结构&#xff1f; 3、中学生学习物理的主要思维特征是什么&#xff1f; 4、发展性课程评价体系的基本理念和原则是什么&#xff1f; 5、物理教学…