随笔分类 - 数据库
摘要:转载自:http://www.cnblogs.com/JavaArchitect/p/7449166.html 在面试java web方面的高级程序员时,我一定会问到 jave core,java web(比如Spring MVC,Hibernate等)和数据库相关问题。在数据库方面,对于java
阅读全文
摘要:目前使用较多的三种分布式事务解决方案: 一、TCC事务补偿型解决方案 TCC分为三个阶段TRYING-CONFIRMING-CANCELING。每个阶段做不同的处理。 TRYING 阶段主要是对业务系统做检测及资源预留 CONFIRMING 阶段主要是对业务系统做确认提交,TRYING阶段执行成功并
阅读全文
摘要:saveorupdate()如果传入的对象在数据库中有就做update操作,如果没有就做save操作。save()在数据库中生成一条记录,如果数据库中有,会报错说有重复的记录。update()就是更新数据库中的记录 主键在saveorupdate()方法中是起着关键作用的,只有这个主键的值不为空的时
阅读全文
摘要:一、hibernate是什么? Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/
阅读全文
摘要:首先session是有一级缓存的,目的是为了减少查询数据库的时间,提高效率,一级缓存的生命周期和session是一样的, session.flush()和session.clear()就针对session的一级缓存的处理。 简单的说, 1 session.flush()的作用就是将session的缓
阅读全文
摘要:Java事务的类型有三种:JDBC事务、JTA(Java Transaction API)事务、容器事务。 常见的容器事务如Spring事务,容器事务主要是J2EE应用服务器提供的,容器事务大多是基于JTA完成,这是一个基于JNDI的,相当复杂的API实现。所以本文暂不讨论容器事务。本文主要介绍J2
阅读全文
摘要:Session Clear()与 Flush() 解释 1.Clear 方法 无论是Load 还是 Get 都会首先查找缓存(一级缓存) 如果没有,才会去数据库查找,调用Clear() 方法,可以强制清除Session缓存。 例: [java] view plain copy public void
阅读全文
摘要:今天碰到一个问题,更新历史数据时,由于数据库表数据量太大,单行更新速度很慢,要求每五千条执行一次提交进行更新。执行SQL如下: 这样写执行效率还可以。
阅读全文
摘要:共享锁和排它锁 MySQL的锁系统:shared lock和exclusive lock(共享锁和排他锁,也叫读锁和写锁,即read lock和write lock) 读锁是共享的,或者说是相互不阻塞的 写锁是排他的,一个写锁会阻塞其他的写锁和读锁 在实际的数据库系统中,每时每刻都发生锁定,当某个用
阅读全文
摘要:1、开发上手难度 hibernate的真正掌握(封装的功能和特性非常多)要比Mybatis来得难。 在真正产品级应用上要用Hibernate,不仅对开发人员的要求高,hibernate往往还不适合(多表关联查询等)。 2、系统调优调优方案对比 Hibernate: * 制定合理的缓存策略; * 尽量
阅读全文
摘要:缓存:缓存是什么,解决什么问题? 位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为缓存Cache。缓存目的:让数据更接近于应用程序,协调速度不匹配,使访问速度更快。 缓存的范围分为3类: 1.事务范围(单Session即一级缓存) 事务范围的缓存只能被当前事务访
阅读全文
摘要:今天记录一次公司的技术分享,让我明白了,原来数据冗余也是一个利器。 数据库范式 在上学学习数据库的时候肯定都是要讲到范式的,这里简单回顾一下。-第一范式(1NF)所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项,即没有重复域。-第二范式(2
阅读全文
摘要:在MySQL中经常会配置自增长属性的字段作为主键,特别是使用InnoDB存储引擎, 因为InnoDB的聚集索引的特性,使用自增长属性的字段当主键性能更好,但是使用自增主键也可能会带来一些问题。举个例子,使用自增主键对数据库做分库分表,可能出现一些诸如主键重复等的问题,或者在数据库导入的时候,可能会因
阅读全文
摘要:索引 无论是面试,还是实际工作中,对于一个Java程序员来说,数据库优化是避不开的一个技术点,关于数据库的优化,在性能达不到要求的情况下,我大致给出以下几个方向: (1)优化表结构,对常用字段和非常用的字段分开存储 (2)优化SQL,合理使用索引 (3)做数据库读写分离,减少IO压力,由于数据库对记
阅读全文
摘要:一、SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库。 二、SQL注入攻击的总体思路 1.寻找到SQL注入的位置 2.判断服务器类型和后台数据库类型 3.针对不通的服务器和数据库特
阅读全文
摘要:这个网站中有很多方法。https://code.google.com/p/mybatis/issues/detail?id=85 自己试验了如下的方法。 1. 参数中直接加入%% param.setUsername("%CD%"); param.setPassword("%11%"); 2. bin
阅读全文
摘要:在用MyBatis操作数据库的时候相信很多人都用到,当在判断null, 大于,大于等于,小于,小于等于,不等于时估计很多都用到,比较容易实现了,这里就省略了,但唯独判断条件为等于时估计蛮多人遇到坑了, 俺在这个问题上坑了差不多一天,于是把这个实验总结并简要记录一下; 当MyBatis 判断条件为等于
阅读全文
摘要:1,<>和!=2,单独的>,<,(有时会用到,有时不会)3,like "%_" 百分号在前.4,少用or,用它连接时后面索引会失效。5,单独引用复合索引里非第一位置的索引列.(最佳左前缀法则,带头大哥不能死,中间兄弟不能断)6,字符型字段为数字时在where条件里不添加引号.7,对索引列进行运算.
阅读全文
摘要:表结构如下: name schedule score '张三' '语文' '20''张三' '数学' '60''张三' '英语' '80''李四' '数学' '30''李四' '英语' '60''李四' '语文' '80' 想要的结果如下: 姓名 语文 数学 英语 总成绩 '张三', '
阅读全文