# honey **Repository Path**: automvc/honey ## Basic Information - **Project Name**: honey - **Description**: Bee,互联网新时代的Java ORM框架,支持Sharding;JDBC,Android,HarmonyOS;更快、更简单、更自动,开发速度快,运行快,更智能! Honey 是Bee的实现. - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: https://gitee.com/automvc/honey - **GVP Project**: No ## Statistics - **Stars**: 32 - **Forks**: 13 - **Created**: 2018-07-28 - **Last Updated**: 2025-06-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: ORM, JDBC, Android, harmony, MongoDB ## README Bee ========= ## 好消息: **Bee 2.1 完善的Sharding分片功能, 完善的MongoDB ORM功能。** 当前**最新**版本为:**V2.4.2 LTS版** 1.7.x LTS版为:**1.17.21** Sharding分片:对业务开发透明,编码透明,只加少量分片配置即可实现分片功能. #### [快速开始:Shardign最佳实践参考实例](guide/Quick-start-Sharding_CN.md) #### 工欲善其事必先利其器!——《论语》 #### 为适应互联网时代软件需求量大,需求变更频繁,性能要求高等要求,ORM Bee应运而生! **Bee**,一个简单,易用,功能强大(编码少、开发速度快,运行快)的 JAVA ORM 框架。 **Bee**,互联网新时代的Java ORM框架,更快、更简单、更自动,开发速度快,运行快,更智能! **Bee简单易用**:**概念简单**,10分钟即可入门。 **Bee功能强大**:运行速度比其它流行ORM工具更快。 **Bee功能丰富**:支持JDBC/关系型数据库; 支持手机环境ORM:Android和Harmony;支持NoSQL的Cassandra,Mongodb等;支持Sharding分片;支持ElasticSearch查询。 **如果说Mybatis在Hibernate之后不是重复造轮子,那Bee在Hibernate和Mybatis之后也不会是重复造轮子!** 择其优点,避其缺点,此外,还加有自己的优点! #### 磨刀不误砍柴工! Bee连磨刀的时间都帮你省了。 [IT->AiTea](What-is-AiTea.md) ## 环境要求 #### Bee jdk1.8+ Bee2.1.8 + Spring boot3.0.8对应版本**2.1.8.boot3.0.8 需要JDK17** Bee2.2 + Spring boot3.0.13对应版本**2.2.boot3.0.13 需要JDK17** ## Bee主要功能特点介绍: [主要功能介绍](../../../bee/blob/master/main-feature.md) ## 最新功能简介: ### **V2.5.2(2025·LTS版) 开发中...** **2.5.2.1 新年** 1. MongoDB update,delete,deleteById支持分片 2. MongoDB modify 分片cache增强 3. MongoDB index support for sharding 4. add ShardingFullOpTemplate 5. SuidRich的实现类ObjSQLRich增加selectByTemplate **2.5.2.2** 6. fixed bug for MongodbShardingDdlEngine 7. 记录并打印SQL执行时间 bee.osql.showSqlExecuteTime=true bee.osql.minSqlExecuteTime=0 8.使用CQRS命令查询责任分离模式操作数据库 ### **V2.4.2(2024.冬至·LTS版)** 1. GenFiles增加genFileViaStream,支持读取jar里的配置文件 2. Genbean:更新方法genFieldFile,toString, 添加方法setUpperFieldNameInFieldFile用于指定变量大小写风格 3. 更新DoNotSetTabShadngValue提示信息(分片插入需要设置分片键的值) 4. SuidRich selectById,deleteById支持sharding 5. Condition支持clone 6. fixed bug: sharding select all(no paging) sharding modify cache ## [详细完整功能介绍](../../../bee/blob/master/Changed_Log_CN.md) [点击链接可查看 详细完整功能介绍](../../../bee/blob/master/Changed_Log_CN.md) ## Bee支持的数据库 1.MySQL 2.Oracle 3.SQL Server 4.MariaDB 5.H2 6.SQLite 7.PostgreSQL 8.MS Access 9.金仓 10.达梦 11.OceanBase 12.Cubrid,HSQL,Derby,Firebird 13.其它支持JDBC的DB NOSQL: 14.Mongodb 15.ElasticSearch 16.Cassandra 手机环境(的数据库): 17.Android 18.Harmony ## ORM比较 ### 应用于JDBC方面的比较 [ORM-Compare (More Detail)](../../../orm-compare) 测试环境: Windows. 数据库: MySQL (Version 5.6.24). 测试点: 批量插入;分页查询;事务(update and select).
批量插入(单位: ms)
  5k 1w 2w 5w 10w
Bee 529.00 458.33 550.00 1315.67 4056.67
MyBatis 1193 713 1292.67 1824.33 Exception

 

分页查询(单位: ms)
  20次 50次 100次 200次 500次
Bee 17.33 58.67 52.33 38.33 57.33
MyBatis 314.33 446.00 1546.00 2294.33 6216.67

 

事务(update and select) (单位: ms)
  20次 50次 100次 200次 500次
Bee 1089.00 70.00 84.00 161.33 31509.33
MyBatis 1144 35 79.67 146.00 32155.33
**Bee需要的文件** orm\compare\bee\service\BeeOrdersService.java **Mybatis需要的文件**(对一个表的操作,就会比Bee多三个dao相关文件) orm\compare\mybatis\service\MybatisOrdersService.java orm\compare\mybatis\dao\OrdersDao.java orm\compare\mybatis\dao\OrdersMapper.java orm\compare\mybatis\dao\impl\OrdersDaoImpl.java 公共都需要的有,Javabean和Service接口: Orders.java OrdersService.java **用Bee无需用户再写Dao代码,一个表少三个Dao文件,100个表就少300个Dao文件.** ### Bee应用于APP方面的比较 **Bee应用于APP开发性能对比数据** 操作1万条数据 ,使用时间对比如下.
操作1w条数据 (单位: ms)
  insert query delete
greenDao(Android) 104666 600 47
Bee(Android 8.1) 747 184 25
Bee(HarmonyOS P40 Pro模拟器) 339 143 2
快速开始: ========= ## 1. 引入Bee #### 1.1 maven工程,添加如下依赖 ```xml org.teasoft bee-all 2.4.2 mysql mysql-connector-java 5.1.47 runtime ``` Gradle ```xml implementation group: 'org.teasoft', name: 'bee-all', version: '2.4.2' //Gradle(Short) implementation 'org.teasoft:bee-all:2.4.2' ``` #### 1.2 也可以直接下载jar文件 ## 2. 创建数据库和表 举例如下: 创建一个数据库,默认名称为bee. 可以用[init-data(user-orders)-mysql.sql](../../../bee-exam/blob/master/src/main/resources/init-data(user-orders)-mysql.sql)脚本创建表和插入初始化数据. ## 3. 更新数据库的配置信息(在bee.properties) 注:如果还没有bee.properties文件,可以自己新建一个. (默认的bee.properties位于Hoeny工程下,对应HoneyConfig.java,列举了Bee所有会用到的配置) 也可以配置数据源(此处只是一个例子). \#bee.databaseName=MySQL bee.db.dbName=MySQL bee.db.driverName = com.mysql.jdbc.Driver \#bee.db.url =jdbc:mysql://localhost:3306/bee?characterEncoding=UTF-8 bee.db.url =jdbc:mysql://127.0.0.1:3306/bee?characterEncoding=UTF-8&useSSL=false bee.db.username = root bee.db.password = \#输出日志 bee.osql.showSQL=true bee.osql.showSql.showType=true bee.osql.showSql.showExecutableSql=true \# since 2.1.7 =true时,可格式化sql bee.osql.showSql.sqlFormat=false \#log4j>slf4j>log4j2>androidLog>harmonyLog>systemLogger>fileLogger>noLogging>jdkLog>commonsLog \#fileLogger 输出到文件; systemLogger 控制台输出 bee.osql.loggerType=systemLogger ## 4. 生成Javabean Orders可参考: [Orders(Javabean)](../../../bee-exam/blob/master/src/main/java/org/teasoft/exam/bee/osql/entity/Orders.java) [自动生成Javabean](../../../bee-exam/blob/master/src/main/java/org/teasoft/exam/bee/osql/autogen/GenBeanExam.java) ## 5. 运行下面的 java代码 关键代码 ```java List list1 =suid.select(orders1); //select int updateNum=suid.update(orders1); //update int insertNum=suid.insert(orders2); //insert int deleteNum=suid.delete(orders2); //delete ``` 详细实例 ```java import java.math.BigDecimal; import java.util.List; import org.teasoft.bee.osql.api.Suid; import org.teasoft.honey.osql.core.BeeFactoryHelper; /** * 查,改,增,删 Suid (select,update,insert,delete)实例 * @author Kingstar * @since 2.1 */ public class SuidExam { public static void main(String[] args) { Suid suid=BeeFactoryHelper.getSuid(); // Suid suid=BF.getSuid();//从1.9.8开始,可以加快输入 //需要先生成相应的Javabean Orders orders1=new Orders(); orders1.setId(100001L); orders1.setName("Bee(ORM Framework)"); //1:select查询实例 //默认不处理null和空字符串.不用再写一堆的判断;其它有值的字段全部自动作为过滤条件 List list1 =suid.select(orders1); //select for (int i = 0; i < list1.size(); i++) { System.out.println(list1.get(i).toString()); } //在实体里,默认的运行符是等号,除了等号,Bee是用比较符合书写习惯的方法, 可以任意写不同的条件. //Condition condition=BF.getCondition(); //SuidRich接口有很多带Condition参数的方法 //condition.op(Orders_F.userid, Op.ge, 0); //userid>=0 //Op支持除了"="外的,>,<,>=,<=,!=, like, in, not in 等 //2:update更新实例 orders1.setName("Bee--ORM Framework"); //默认只更新需要更新的字段. 过滤条件默认只用id字段,其它需求可用SuidRich中的方法. int updateNum=suid.update(orders1); //update System.out.println("update record:"+updateNum); Orders orders2=new Orders(); orders2.setUserid("bee"); orders2.setName("Bee(ORM Framework)"); orders2.setTotal(new BigDecimal(91.99)); orders2.setRemark(""); //empty String test //3:insert 插入实例 int insertNum=suid.insert(orders2); //insert //默认不处理null和空字符串.不用再写一堆的判断;其它有值的字段全部自动插入数据库中. //方便结合DB插值,如id自动增长,由DB插入;createtime由DB默认插入 System.out.println("insert record:"+insertNum); //4:delete 删除实例 //默认不处理null和空字符串.不用再写一堆的判断;其它有值的字段全部自动作为过滤条件 //int deleteNum=suid.delete(orders2); //delete //System.out.println("delete record:"+deleteNum); } } //注意: 事务,分页,排序,范围查询,查询结果直接返回json等都支持,这里只是一个入门例子. //更加应用参考,请查看: 更多例子 和 综合应用 . ``` ## 6.操作视频: ------------------------------------------------------------------------ ## [快速开始:Harmony环境使用Bee及性能对比](guide/Quick-start-for-Harmony_CN.md) ## [快速开始:Android环境使用Bee及性能对比](guide/Quick-start-for-Android_CN.md) ### [更多例子/测试用例](../../../bee-exam/) ### [Bee+Spring-boot Demo](../../../bee-starter-demo/) **2.2.boot3.0.13需要JDK17** ## Bee架构介绍 **V2.1** ## Bee常用接口介绍 综合应用: ========= **Java快速编程, 让Java的开发速度超过php和Rails。** **更快的开发Java Web的新组合:** [Bee+Spring+SpringMVC](../../../../aiteasoft/bee-spring-springmvc) **包括仅分库多数据源实例** [Bee+Spring+SpringMVC开发学校教务管理与分数管理系统](../../../../aiteasoft/schoolsys) **更快的开发Spring Cloud微服务的新组合:** [Bee + Spring Boot](../../../bee-springboot) **HarmonyOS使用Bee开发App实例:** [Bee + HarmonyOS](../../../../aiteasoft/HarmonyOS-ORM-Bee-Demo) **自动生成代码GenCode** [Generate code automatically](../../../gencode) ### 快码加编 [快码加编——代码生成神器](https://www.kmcoding.com) * 1.一键生成整个工程(无需再搭建系统框架) * 2.自动生成增删改查等常用功能 * 3.生成的工程可以直接运行,不再是只能看不能跑的demo * 4.快速响应变化,与客户边聊边改,立即可以看到更改后的效果 * 5.基础功能无需人工测试、接口联调,简化整个开发流程 * 6.设计的软件易维护、易扩展,利于二次开发、增加新功能! * 7.既可以**节约开发成本**,也可以**提高开发效率**! ...... ## [FAQ常见问题](../../../bee/blob/master/FAQ_CN.md) [点击链接可查看(资料) FAQ常见问题](../../../bee/blob/master/FAQ_CN.md) 其它学习资料: ========= ### API-DOC API-V1.17 下载代码含有 bee-1.17中文和英文版API,bee-1.17中文版源码 API-V2.1(最新版) 下载代码含有 bee-2.1英文版API ### 使用文档 [wiki 文档](../../../bee/wikis) [Bee常用大全](/guide/Frequently-Used-Guide.md) [CSDN: ORM Bee资料大全](https://blog.csdn.net/abckingaa/article/details/121664398) **Bee** 网址: https://github.com/automvc/bee **Bee在gitee** 的网址: https://gitee.com/automvc/bee bee-ext: https://github.com/automvc/bee-ext 联系与欢迎: ========= #### 作者的电子邮箱email: honeysoft@126.com #### 如有任何相关建议,欢迎给作者发邮件,不胜感激! #### 更多设计思想,请关注微信公众号: 软件设计活跃区 为了我们能够相互了解,更好的为你服务,你可以到以下地址登录使用情况. https://github.com/automvc/bee/issues/43 https://gitee.com/automvc/bee/issues/I3PIUJ 完成**登记的伙伴**,请加QQ群(**992650213**),可找群主领企业级生产环境建议相关资料! #### 为了能及时解答大家的疑问,可以加入Bee的技术QQ群:992650213 #### 同时,也欢迎你加入到Bee框架的开发之中,相信有你的加入,Bee会更加美好!