mongoDB和关系型数据库的区别最大的好处就在于表结构的不对称、弱事务,mongoDB牺牲了事务来换取更快的访问速度,有人说mongoDB对于内存太贪婪了,其实也不见得,以windows版为例它会默认开启100万个可用连接数,抢不抢内存要经过实践才能知道,以6核cpu为例mongoDB对内存的使用基本排不上号。虽然如此在驱动的提供这块mongoDB的驱动差异很大。如2.10版本的驱动连接数据库还可以使用Mongo但是后面的驱动却没有了Mongo,取而代之的则是MongoClient。mongoDB虽然和关系数据库虽然有差异但是对资源的处理都是一样的,下面分享一下我开发过程中遇到的问题。
1 使用freemarker显示json数据的注意事项
struts2是很多公司的首选,但是使用struts2也存在很多限制,例如不能遍历json.即使使用velocity也拿json数据没辙。唯一的选择也只有freemarker,可是使用freemarker也有一点弊端那就是单mongoDB里面的数据如果是NULL类型,页面就会报错,针对这个情况唯一的解决办法就是添加数据的时候进行数据有效性的校验
2 jsp使用freemarker的注意事项
jsp功能虽然强大,但是不支持freemarker,在jsp里也不能使用freemarker的标签,有时把jsp全部替换为ftl也不现实,针对这种情况就只能是把freemarker的tld引入进来在页面上就使用<fm:template></fm:template>把freemarker的代码包裹起来
3 freemarker使用struts标签的注意事项
freemarker也不能直接支持struts标签,但是针对这种情况网上也提供了解决方法,如有需要可以直接百度
4 mongoDB注意事项
使用程序和mongoDB交互的时候很多网友给的建议真的可以说是误人子弟,例如“使用mongoDB后可以不关闭数据库连接”这种说法真的是大错特错,虽然没见过windows版的mongoDB连接数被用完会成什么样,但是linux版本的如果连接数用完了,数据库就会挂掉,这种问题就特别严重了,数据丢了不说还会造成很大的经济损失。java程序建议的做法是先写一个获取连接和关闭连接的工具类,之后写一个接口并声明常用方法,之后写实现类和代理操作类。连接的创建、关闭由代理操作类来完成,之后写一个工厂操作类进行统一的方法调用,这里还给喜欢使用spring的程序员一个建议就是:不要把mongoDB和spring整合,这样做真的没有太多好处。