# RabbitORM2 **Repository Path**: RabbitOpen/RabbitORM2 ## Basic Information - **Project Name**: RabbitORM2 - **Description**: 高性能全自动ORM框架 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-19 - **Last Updated**: 2024-01-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 官网:http://www.rabbit-open.top/rabbit/orm2 联系我: qq:709498191@qq.com ================================== V 3.3.2 ======================================== 1、强化insert操作,新增addBatch方法。 允许批量添加数据(分库分表模式下不支持该方法) 2、强化XmlMapperParser,允许多个xml映射同一个实体对象 3、强化扫描组件,支持包内扫描、SessionFactory废弃是否扫描jar配置,默认扫描 4、Query新增innerFetch / innerJoinFetch系列接口,允许强行inner连接查询 5、SessionFactory mappingFiles改为文件路径如(classpath*:/rabbit/*.xml) ================================== V 3.3.1 ======================================== 1、强化Entity注解,新增自动推测功能,基础数据类型可以不写Column,框架会按照驼峰原则进行自动推测 ================================== V 3.3.0 ======================================== 1、新增 distributed-transaction-support 模块 2、重命名分片表cursor对象 ================================== V 3.2.0 ======================================== 1、调整ShardingPolicy策略对象为接口对象 2、扩展分片策略,新增分片表查询、更新、删除对象 3、扩展Entity注解,新增分片查询分页策略机制 ================================== V 3.1.1 ======================================== 1、扩展Column注解,新增自定义多对一关联字段能力 2、扩展ManyToMany注解,新增自定义多对多关联字段能力 3、扩展OneToMany注解,新增自定义一对多关联字段能力 4、修改JoinTableManager中replaceJoinRecords的逻辑,改为删除所有旧的数据,然后添加新数据 5、新增mergeJoinRecords api, 允许合并中间表数据 6、取消query对象count函数左链接(多对多、一对多)行为自动优化功能,交由用户自行判断 ================================== V 3.1 ========================================= 1、将原有的方言支持pager独立出来,用以对命名查询page函数支持 2、优化查询别名缓存,在初始化时就生成缓存 3、新增多对多,一对多,多对一过滤条件api支持 4、强化SqlQuery,新增count函数, 新增分区表支持 5、删除原有命名查询对象中的set函数(该函数不支持DMLInterceptor) ================================== V 3.0 ========================================= 1、重构代码结构 |--orm | | | |--rabbit-orm-common 基础公共包 | |--rabbit-orm-datasource 内置数据源 | |--rabbit-orm-core 核心功能包 | |--rabbit-orm-code-helper 逆向工程包 | |--rabbit-agent 代理增强包,用以辅助检测性能 2、新增命名删除(NamedDelete)、命名更新(NamedUpdate)的sql语法支持 3、增强逆向工程代码生成能力,新增生成字段对应的静态常量功能 4、强化PackageScanner,新增对多模块工程之间代码扫描的支持 5、优化命名SQL dtd规则文件,解除sql类型顺序的限制 6、强化SQLQuery对象,允许进行对象查询 7、扩展数据类型映射支持,新增枚举类型支持 8、慢sql参数改为以占位符"?"方式显示 9、给数据源Session对象提供了所有方法的默认实现 ================================== V 2.8.1 ========================================= 1、强化Update对象,新增api deltaUpdate 允许对单表的某个字段进行原子加减操作 2、强化查询对象,新增api joinFetchByFilter,允许多对多查询时新增中间表过滤条件 3、新增逆向工程代码生成器 ================================== V 2.8.0 ========================================= 1、强化过滤条件正则表达式功能,允许正则表达式中有多个字段的运算, 例如:addFilter("TIMESTAMPDIFF(hour, ${start}, ${end})", 48) 2、新增DynamicQuery查询对象允许查询动态生产的字段(比如count(1)),允许group by操作 3、修复oracle Date类型日期读取数据时只读取年月日的bug 4、调整SqlParser的对象存储,由静态变量调整为内部变量 5、新增对超长时间连接持有行为的监控 ================================== V 2.7.5 ========================================= 1、修复实体对象属性有默认值时根据主键进行更新会将默认值更新入库的bug。 2、RabbitDataSource新增配置fetchTimeOut,支持调节等待可用连接的最大时间 3、优化设置事务隔离级别逻辑,提升ORM框架使用非内置数据源的效率,提升访问速度。 4、Update类新增exclude方法,允许在UpdateByID和replaceByID时排除特定字段。 ================================== V 2.7.4 ========================================= 1、扩展SpringDaoAdapter,新增更新方法replaceByID,实现对数据的替换。 2、去掉session中缓存淘汰日志 ================================== V 2.7.3 ========================================= 1、新增对事务隔离级别的支持,使用方法和spring事务使用方法一致 ================================== V 2.7.2 ========================================= 1、优化DMLAdapter,AbstractQuery。规避关闭statement、ResultSet失败导致连接释放失败的风险 2、修复SessionFactory获取连接时由于setAutoCommit方法发生网络异常造成连接泄漏bug ================================== V 2.7.1 ========================================= 1、优化datasource获取连接逻辑,允许获取连接时等待1秒 2、优化Session对象,新增发生异常回收session逻辑 3、优化datasource重启逻辑,新增逻辑强制释放未回收的连接 ================================== V 2.7.0 ========================================= 1、采用Spring自带的ConnectionHolder进行事务连接缓存媒介(解除在和第三方orm框架共用时对内置数据源的依赖)。 2、扩展多数据源接口CombinedDataSource类,新增获取所有数据源信息的方法 3、修正session缓存数超过最大值时未真正释放Statement的bug ================================== V 2.6.7 ========================================= 1、优化RabbitTransactionManager, 非nested事务全部认为是required(不再抛异常) ================================== V 2.6.6 ========================================= 1、增强RabbitTransactionManager, 新增对nested事务的支持 ================================== V 2.6.5 ========================================= 1、优化RabbitTransactionManager,规避调用doSuspend方法异常 ================================== V 2.6.4 ========================================= 1、修复RabbitDataSource被其它框架引用时事务支持失败的bug 2、RabbitDataSource引入dumpSuspectedFetch配置boolean属性,会在连接可能泄漏时打印出堆栈日志 3、新增sql执行异常时打印日志信息的功能 ================================== V 2.6.3 ========================================= 1、迁移Spring事务支持逻辑,从SessionFactory中迁移到DataSource。以支持三方框架直接使用数据源 ================================== V 2.6.2 ========================================= 1、增强MultiDropFilter,允许相同字段的or条件 ================================== V 2.6.1 ========================================= 1、解耦数据源对SessionFactory的依赖 2、将慢sql的相关配置迁移到数据源配置项中 ================================== V 2.6.0 ========================================= 1、修复实体类meta缓存信息在多线程环境下可能会被污染的bug。 2、修改SpringDaoAdapter中日志成员变量的class取值。 ================================== V 2.5.6 ========================================= 1、加强查询、删除、更新对象过滤 条件api,新增addNotNullFilter 2、优化SpringDaoAdaptor,使之支持实体服务类的多层级继承 ================================== V 2.5.5 ========================================= 1、调整多分支or条件方法名setMultiDropFilter为addMultiDropFilter,可以加多个OR条件 2、修正querySpecifiedFields方法查询结果集策略,允许查询出所有字段都为空的对象。 ================================== V 2.5.4 ========================================= 1、修复querySpecifiedFields查询的字段不能为空的bug 2、SessionFactory新增scanJar布尔属性,默认false,表示扫描实体类时是否需要扫描jar文件 ================================== V 2.5.3 ========================================= 1、修复打印慢sql时不能有空参数的异常 ================================== V 2.5.2 ========================================= 1、调整DataSourceMonitor的休眠方式,以信号量的方式进行睡眠等待。用以提升连接池关闭的速度 2、新增查询API querySpecifiedFields,支持不带主键的查询方式 3、新增相同实体类映射同一表的异常提示 4、重构部分方法名 ================================== V 2.5.1 ========================================= 1、修复慢sql显示值显示永远为第一条数据的内容的bug 2、新增显示慢sql时屏蔽参数值的功能,配置SessionFactory的showMaskedSlowSql属性 3、新增过滤条件为list时,入参不能为空的异常提醒 ================================== V 2.5.0 ========================================= 1、新增慢sql统计分析支持 ================================== V 2.4.9 ========================================= 1、AbstractQuery新增filterFields 方法,支持只查询特定字段 2、扩展Entity方法,支持设置需要过滤的字段 3、优化读写分离数据源,在事务流程中一直使用写数据源 ================================== V 2.4.8 ========================================= 1、新增注解Proxy类,代理所有自定义注解,优化注解访问,提升反射效率 2、强化PackageScanner解决PackageScanner无法扫描springboot项目jar文件中的class文件的问题 ================================== V 2.4.5 ========================================= 1、优化PackageScanner,解决PackageScanner无法扫描jar文件中的class文件的问题 2、优化SQLParser,解决SQLParser无法扫描jar文件中的xml文件的问题 3、优化SQLParser,解决无网络环境下无法解析命名sql文件的bug 4、强化命名查询,新增通过VO对象来设值过滤条件的api 5、开放sql日志api,允许开发人员通过api显示sql日志 6、修复IN条件不支持Date数组类型的bug ================================== V 2.4.4 ========================================= 1、优化DMLFilter,简化自定义DMLFilter的使用 2、调整showSQL方法执行时间点,允许显示加密后的数据 ================================== V 2.4.3 ========================================= 1、修改Insert类,新增空插入抛异常支持 2、修改Update类、对所有数据库都不再支持更新主键字段 3、重构部份代码逻辑 ================================== V 2.4.2 ========================================= 1、新增对SQLite3的支持 2、AbstractQuery、NamedQuery 新增list和unique方法。 3、扩展查询对象功能, 允许同一个查询对象重复执行execute、count、list以及unique方法 4、优化PackageScanner功能。使之在扫描jar文件时不会因为依赖包的缺失(NoClassDefFoundError)而终止扫描 ================================== V 2.4.1 ========================================= 1、扩展@Column注解,新增keyWord方法,标记当前字段名是数据库关键字。在生成dml语句时就会特殊处理该字段 2、重构ddl代码,去掉部分重复代码 3、将SpringDaoAdapter中的createNameMappedQuery更名为createFieldsMappingQuery 4、新增支持【主表对象】简单OR类型过滤条件的API ----> setMultiDropFilter。MultiDropFilter不参与分表计算因子 ================================== V 2.4 ========================================= 1、完善RabbitDataSource新增SQLException关闭连接功能,主要是为应对网络闪断异常。是对DataSourceMonitor的补充完善。 ================================== V 2.3 ========================================= 1、新增分库支持。 规则:中间表必须和主表一个库, 关联表必须和主表一个库 ================================== V 2.2 ========================================= 1、新增分区表的支持, 分区表策略对SQLQuery、NamedQuery对象生效, 需要sql开发人员自己确认使用哪张表 分区表可以关联查询其它表,但是不能被其它表关联查询 外键字段不参与分区规则计算 2、修正2.0重构后meta信息中joinMetas信息在使用过程中被污染的bug。 修正为每次使用时都clone一个副本 ================================== V 2.1 ========================================= 1、新增dml操作前置过滤器 DMLFilter ================================== V 2.0 ========================================= 1、调整了框架架构,解耦了数据源,使得RABBIT ORM可以使用其它数据源工作 2、不再支持Column 注解中的usedForMapping功能。统一通过API增添过滤条件 3、强化了SQLQuery和JDBCQuery。两者都不再支持直接在代码写sql实现,转为在xml中写sql 4、强化了Query类。动态添加内链接条件不再有表个数的限制 5、解耦了方言实现和功能代码之间的关联