关于持久层和数据库一些自己的想法

最近遇到一些让自己纠结的问题,如持久层到底是选择mybatis还是spring-data-jpa。就我个人而言,mybatis是我熟悉且喜欢的,但是写mapper里面的映射着实让人心累,虽然有gengrator这种自动生成mapper的东西,但是生成的代码毕竟不是自己写的代码,难以维护,所以现在更多的时候我宁愿手写这些代码。spring-data-jpa的确是个很好的东西,帮开发人员减轻了很多负担,但是越是封装得好,开发人员的自由度就越低,虽然也提供了@Query和Specification,但是也只能做极少的事情,在mybatis的xml里面写灵活动态sql的快感是在这里一点都体会不到的。

再一点就是关于数据库的,之前一直是在用mysql,因为项目的原因,也一直是在用innodb引擎。虽然myisam在查询和添加上有很大的优势,但是在事务上的不支持,也使我不得不放弃这个引擎。再然后就是tokudb了,的确,tokudb有很多特别吸引人的有点,比如高压缩比,高insert性能,秒级或瞬间的增删字段,丰富的索引类型等等。但是也不要被这些优势迷昏了眼,目前tokudb的资料还是很少的,踩到坑里面了大概只能自救了吧!再说回innodb,这是mysql默认的引擎,支持事务,在索引的情况下查询,排序都是很快的,删除和更新肯定是比起tokudb慢很多的,这就要看项目的业务场景了。在数据量稍微大点的时候(百万级别),innodb在没有sql优化的时候局限就开始显现出来,mysql的优化方式很多,大家可以根据自己的情况进行针对性的优化,这里就不细讲了

说完mysql,其实也考虑过nosql。个人觉得还是不要盲目跟风,在数据量不大的情况下,mysql是完全能应对的。因为nosql对连接和事务的不支持,在项目上线且拥有百万级的数据量的时候,这个问题就特别明显了。所以对于数据库的选择还是以团队为准。

你可能感兴趣的:(关于持久层和数据库一些自己的想法)