首先说明一下,JDBC 是操作数据库最原始的方式,而 hibernate 是在 JDBC 的基础上,封装数据库操作的一个框架。基本上对于一个项目开发而言,很少有用 JDBC 直接去操作数据库的,因为步骤繁琐,而且很多功能实现起来很麻烦,但优点是 SQL 直接操作数据库,对 SQL 可控性更高,性能上面会更好。缺点: 1)代码繁琐 2)不是面向对象的数据库操作 3)资源关闭的代码也很繁琐 4)没有做到数据库缓存 5)移植性比较差(MySQL无法移植到Oracle)优点: 1)性能高相反,hibernate 能够帮助我们封装很多常用的操作,使用起来非常简单,像一些数据库连接池,数据库类型无缝切换,分页操作等等,都已经帮我们实现了。
缺点: 1)程序员无法控制SQL语句的生成 (HQL语句可以手写SQL语句) 2)一个项目对SQL语句优化特别高,HIbernate则不适合 3)如果一张表的数据量特别大,则不适合HIbernate优点: 1)代码比较精简 2)是面向对象的数据库操作 3)只需要关闭一个对象就可以了(关闭Session) 4)数据缓存 (一级缓存、二级缓存、查询缓存) 5)移植性比较好
新手喜欢打7条,留6条对子,这种习惯性思维常常把一手好牌打成废牌。试想一下棋牌百科,为何会有“宁拆对子,不拆搭子”的口诀,不就是因为搭子上张宽,容易摸成顺子(58条一共有八张),而对子碰牌有难度(6条外面只有2张),特别是现过的对子,如果在别人手上,就很难碰到了。所以,选择拆对子还是拆搭子,最根本的是比较碰牌和摸成顺子的概率,哪个概率大就留哪个。如果在实战中,58条几乎没有了,就要拆7条(保证安全的前提下);如果58条还有几张棋牌百科,而6筒已经现过了,属于“后对”,那就该拆6条,预备摸58条或者下这个叫。