传统的JDBC编程步骤:
1、使用JDBC编程需连接数据库,注册驱动和数据库信息
2、操作Connection,打开Statement对象
3、通过Statement执行SQL,返回到ResultSet对象
4、使用ResultSet读取数据,同事转换为具体的POJO对象
5、关闭数据库相关资源
缺点:
1、工作量大
2、对JDBC编程可能产生异常进行处理并正确关闭资源
(全自动——小中型公司适用)Hibernate框架使用:
1、于传统JDBC编程而言消除了代码的映射规则,并分离到XML或注解里去配置
2、无需再管理数据库连接
3、借助SessionFactory对象对数据库的表进行操作——ORM
4、一个会话中,不要操作多个对象,只要操作Session对象即可
5、关闭资源只需关闭一个Session对象即可
缺点:
1、全表映射可能带来不便,如更新时需发送所有的字段
2、无法根据不同的条件组装不同的SQL
3、对多表关联和复杂SQL查询支持较差,需自己写SQL,返回事自己需组装成具体的POSO
4、不能有效支持存储过程
5、若有HQL,但性能较差
(半自动——大公司适用)MyBatis框架使用:
1、需手工匹配提供POJO、SQL和映射关系
2、借助SqlSessionFactory对象对数据库的表进行操作——ORM
3、接口编程映射器只需一个接口和映射文件便可运行
4、具有高度灵活、可优化、易维护等特点
缺点:
1、自写SQL代码
2、获取SqlSessionFactory对象有两种方法,一种是XML配置获取(编码硬代码、便以后期维护),另一种是代码获取
3、手动创建表
映射器是有Java接口和XML文件共同组成的(定义参数类型、描述缓存、描述SQL语句、定义查询结果和POJO的映射关系)
关于SqlSession和Mapper是MyBatis的核心内容和难点
Log4j简介
Log4j有三个主要组件:Loggers(记录器),Appenders(输出源)、Layouts(布局)
1、Loggers组件在系统中分为五个级别:DEBUG<INFO<WARN<ERROR<FATAL
2、Appenders组件常用的类有:org.apache.log4j.ConsoleAppender(控制台)、org.apache.log4j.FileAppender(文件)、org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)、org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)、org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
3、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注入方式(反转控制):
1、构造方法注入
2、setter注入
3、接口注入
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分为下面几个部分
1、配置数据源
2、配置SqlSessionFactory
3、配置SqlSessionTemplate
4、配置Mapper
5、事务处理