传统的JDBC编程步骤:web
一、使用JDBC编程需链接数据库,注册驱动和数据库信息spring
二、操做Connection,打开Statement对象数据库
三、经过Statement执行SQL,返回到ResultSet对象apache
四、使用ResultSet读取数据,同事转换为具体的POJO对象编程
五、关闭数据库相关资源json
缺点:缓存
一、工做量大mybatis
二、对JDBC编程可能产生异常进行处理并正确关闭资源mvc
(全自动——小中型公司适用)Hibernate框架使用:app
一、于传统JDBC编程而言消除了代码的映射规则,并分离到XML或注解里去配置
二、无需再管理数据库链接
三、借助SessionFactory对象对数据库的表进行操做——ORM
四、一个会话中,不要操做多个对象,只要操做Session对象便可
五、关闭资源只需关闭一个Session对象便可
缺点:
一、全表映射可能带来不便,如更新时需发送全部的字段
二、没法根据不一样的条件组装不一样的SQL
三、对多表关联和复杂SQL查询支持较差,需本身写SQL,返回时本身需组装成具体的POJO
四、不能有效支持存储过程
五、如有HQL,但性能较差
(半自动——大公司适用)MyBatis框架使用:
一、需手工匹配提供POJO、SQL和映射关系
二、借助SqlSessionFactory对象对数据库的表进行操做——ORM
三、接口编程映射器只需一个接口和映射文件即可运行
四、具备高度灵活、可优化、易维护等特色
缺点:
一、自写SQL代码
二、获取SqlSessionFactory对象有两种方法,一种是XML配置获取(编码硬代码、便之后期维护),另外一种是代码获取
三、手动建立表
映射器是有Java接口和XML文件共同组成的(定义参数类型、描述缓存、描述SQL语句、定义查询结果和POJO的映射关系)
关于SqlSession和Mapper是MyBatis的核心内容和难点
Log4j简介
Log4j有三个主要组件:Loggers(记录器),Appenders(输出源)、Layouts(布局)
一、Loggers组件在系统中分为五个级别:DEBUG<INFO<WARN<ERROR<FATAL
二、Appenders组件经常使用的类有:org.apache.log4j.ConsoleAppender(控制台)、org.apache.log4j.FileAppender(文件)、org.apache.log4j.DailyRollingFileAppender(天天产生一个日志文件)、org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)、org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
三、Layouts组件经常使用的类有:org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.PatternLayout(能够灵活地指定布局模式)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等信息)
经常使用模板:(log4j.properties)
log4j.rootLogger=DEBUG , stdout
log4j.logger.org.mybatis=DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n
反射技术和动态代理
通常的动态代理分为两种,一种是JDK反射机制提供的代理,另外一种是CGLIB代理
Spring框架已经成为JAVA世界最为流行的IOC(反转控制)和AOP(面向切面编程)
特色:更好的使业务层和模式层以及业务层和操做实体对象层(dao层)分离,“高内聚,低耦合”
IOC注入方式(反转控制):
一、构造方法注入
二、setter注入
三、接口注入
AOP(面向切面编程):最大的用处是事务的控制
数据库
项目 脏读 不可重读(同一条记录) 幻读
脏读 √ √ √
读写提交 × √ √
可重复读 × × √
序列化 × × ×
Oracle数据库只支持读写提交和序列化(默认隔离级别为读写提交),MySQL数据库默认隔离级别为可重复读
避免数据的脏读、不可重读、和幻读最佳选择是“序列化”即实现Serializable接口
SpringMVC框架它的核心是DispatcherServlet,Servlet将根据拦截的配置去拦截一些请求
附:Strust2框架它的核心是FilterDispatcher,Servlet将根据拦截的配置去拦截一些请求
@ResponseBody//标注把结果转换为JSON数据--需配置
配置:
<bean class=”org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdaper”>
<property name=”messageConverters”>
<list>
<ref bean=”mappingJacksonHttpMessageConverter”/>
</list>
</property>
</bean>
//配置JSON类型
<bean id=“mappingJacksonHttpMessageConverter” class=”org.springframework.http.converter.json.MappingJacksonHttpMessageConverter”>
<property name=”messageConverters”>
<list>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
配置MyBatis-Spring分为下面几个部分
一、配置数据源
二、配置SqlSessionFactory
三、配置SqlSessionTemplate
四、配置Mapper
五、事务处理