Skip to content

ylyxf/stone-book

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

stone-book

这是一本关于stone的开发手册。

stone不算是一个重复发明的轮子,它更像是一个车架,把很多轮子连接起来,让java的web开发不再像踩着很多单轮车前进,最起码像是一辆自行车,更加容易上手。

这本书介绍使用stone来开发时的一些约定和推荐写法,一般不说明为什么这样做。说了为什么,总有许多可以反驳的理由,但其实不管怎么做,都有道理,stone的作者恰好选择了一种效率不那么高,架构不那么好的中庸做法。

下面介绍一下stone使用的轮子,以便帮助你决定是继续读下去,还是合上书去找寻更加高尚的框架和真理。

数据库:stone目前只支持postgresql(下文称pgsql)数据库,不直接支持mysql、oracle、或者sqlserver。这不是stone作者的偏执,只是一些巧合的原因,决定stone基于pg数据库来开发。至于不直接支持其它的数据库,是因为很难一下子支持那么多数据库,这得从下一个轮子说起:持久层框架。

持久层:stone选了mybatis作为持久层框架。用mybatis也是机缘巧合:stone的作者刚工作时,公司使用的是ejb2,后来买书自学hibernate没学会,恰好公司有人用ibatis来简化数据库操作,就在stone中沿用了这个框架。

这是个半自动的orm框架,得自己写sql语句,交给框架执行。虽然sql的标准是统一的,但是开发中总要遇到一些非标准的东西,比如oracle没有自增主键而mysql和pgsql都有。

对于stone内置提供的基本功能:如用户、角色、权限、字典等增删改查,需要对不同的数据库,写不同的sql,作者精力上面达不到这样的要求,所以只实现了pgsql一种。

所以,对于指定了数据库类型的项目,可以不考虑使用stone。但是建议再读半小时,大致浏览一下,也许数据库不同,但是其它方面的处理方式可以给到读者启发。这就是前面说的不直接支持的含义。

业务层:stone使用了Spring来管理业务逻。通过@Autowired和@Service注解将多个业务逻辑类组合在一起相互调用,并保证事务。

web层:stone使用SpringMVC来接收前端的url请求,把get或者post参数转换开发者想要的格式,供业务层使用。

ui层:stone回避这个问题,因为浏览器端没有什么UI的轮子比较圆。stone的开发工具包提供了一个管理界面,可以从那里一窥作者被现实逼迫到了什么程度。

About

develop handbook for stone

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published