上一篇sqltoy-orm 最佳查询介绍:http://zhongxuchen.iteye.com/blog/2375088
一直想介绍一下sqltoy-orm的常规的增删改和对象加载操作,却每次因为太忙或总感觉增删改太过于常规没有了动力。但正因为此导致很多人常常会问:sqltoy-orm 是不是只是查询比较不错?哪怕我每次都强调我玩了很久的hibernate。潜台词就是早已经吸收了hibernate的长处也知道其不足!但主要是优势没有查询那么凸显就没有必要过多强调。
在介绍对象操作之前,首先要强调一下sqltoy-orm是包含一个quickvo这样的工具的,可以帮助你从数据库通过表产生POJO对象(级联关系也是有的,主键策略也是多样的)。对象跟数据库的关系是通过annotation注解自动标注的(开源项目文档和showcase中有范例),quickvo相对于hibernate-tools 最大的优点是每次数据库变更重新生成VO不会覆盖掉你之前对VO的修改,同时VO的生成策略完全可以通过quickvo.xml中进行声明,不同于hibernate有时候还需要修改POJO的注解(重新生成又要改一次)。
言归正传,开始介绍Sqltoy-ORM 对象操作(参见org.sagacity.sqltoy.support.SqlToyDaoSupport):
- 对象加载:
- load单个对象加载包含:load(final Serializable entity);load(final Serializable entity, final LockMode lockMode)、load(entity,lockMode,dataSource)三个方法。
- loadCascade级联加载:loadCascade(Serializable entity, LockMode lockMode)和loadCascade(Serializable entity, Class[] cascadeTypes, LockMode lockMode)两种查询,考虑性能和灵活性sqltoy将级联加载跟对象自身加载分离开来,同时可以指定级联加载的子对象进行精确加载,避免没有必要的性能消耗。
- loadAll批量集合加载:loadAll(final List<?> entities, final LockMode lockMode) 进行对象批量加载。loadAll的效率其实要比hibernate的要高,sqltoy是通过批量查询来实现的。
- loadAllCascade批量级联加载:loadAllCascade(final List<?> entities, final Class[] cascadeTypes, final LockMode lockMode);批量级联加载sqltoy全部采用了批量查询方式,不同于hibernate循环集合通过单个对象进行级联加载,效率得到了很大提升。
- 对象增加save操作:save对象会连同子表对象进行级联保存。
- 单个对象保存并返回主键值:Object save(final Serializable entity) 或save(final Serializable entity, final DataSource dataSource):指定数据源保存对象。
- 批量保存:saveAll(final List<?> entities)或:saveAll(entities,reflectPropertyHandler,dataSource)。
- 批量保存忽视已经存在的:saveAllNotExist(final List<?> entities)。
- 对象修改update操作:sqltoy的update操作是非常有特色的,完全屏蔽了hibernate的缺陷考虑到了实际业务场景的需要。
- update(Serializable entity):自动只修改entity对象不为null的属性(场景:工单处理,各个环节只修改部分字段),从而避免对数据库中其他字段的修改。(相对于hibernate则必须先load然后再update才能实现此逻辑,减少了一次查询从而提升了性能)
- updateDeeply(final Serializable entity):深度修改,entity对象属性无论是null还是非null一律修改到数据库表对应字段中。
- update(final Serializable entity, final String[] forceUpdateProps):修改对象,并指定哪些属性为强制修改字段。相对于1和2,做到了一些平衡和补充。结合使用非常贴切项目的各种场景。
- updateAll(final List<?> entities) ,批量修改:以第一条记录的非null的值为依据进行批量修改。
- updateAll(final List<?> entities, final String[] forceUpdateProps),指定字段进行批量强制修改。
- updateAllDeeply(final List<?> entities, final ReflectPropertyHandler reflectPropertyHandler),批量深度修改。
- updateCascade(final Serializable entity, final String[] forceUpdateProps,final Class[] forceCascadeClasses, final HashMap<Class, String[]> subTableForceUpdateProps),级联修改,可以指定需要级联修改的子表和子表需要强制修改的属性。
- 保存或修改saveOrUpdate操作:底层基于不同数据库方言如:merge into 或insert ON DUPLICATE KEY UPDATE 机制,极大的提升了性能。
- saveOrUpdate(final Serializable entity):对象保存或修改(已经存在则修改)
- saveOrUpdate(final Serializable entity, final String[] forceUpdateProps):保存或修改(针对修改指定哪些字段为强制修改),相对hibernate或mybatis则更加灵活,给开发者带来了更多的选择。
- saveOrUpdateAll(final List<?> entities)、saveOrUpdateAll(final List<?> entities, final String[] forceUpdateProps) :批量保存或修改。
- 对象删除操作:delete或deleteAll。
- delete(final Serializable entity):删掉单挑记录,同时会自动根据外键删除级联的子表相关数据。
- deleteAll(final List<?> entities):批量删除记录,这个删除相较于hibernate性能更高,底层采用批量删除,尤其子表数据删除也是批量操作,不同于hibernate的循环删除子表。
- 唯一性验证:isUnique,传递对象判断对象是否已经存在。经常在数据保存前需要判断数据库中是否已经存在,从而提前进行提醒,让交互更加友好(尤其页面维护数据,当维护一个数值后通过ajax判断是否已经存在,避免提交后通过异常来方式提醒用户)。
- isUnique(final Serializable entity):根据主键判断是已经重复。
- isUnique(final Serializable entity, final String[] paramsName):指定需要判断重复的属性字段进行验证唯一性。
- 查询并锁定再进行修改并返回结果(一次性交互中完成)
- List updateFetch(final QueryExecutor queryExecutor, final UpdateRowHandler updateRowHandler):锁定记录并进行修改,并返回结果,在并发抢占模式下非常有用,如餐厅点桌子,任务竞争性领取等,谁先执行先锁定则先修改先获取(修改后状态发生变化别人就会抢占失败)。
相关推荐
综上所述,SqlToy-ORM是针对Java项目的一款优秀ORM解决方案,尤其适合那些期望在Spring环境下拥有高效率和便捷性的数据操作。通过其独特的设计理念和丰富的功能,SqlToy-ORM可以帮助开发者更高效地完成数据访问层的...
SqlToy-ORM旨在结合Hibernate的便利性和MyBatis的灵活性,使得开发者在处理数据库操作时能够更加贴合实际项目需求,提高开发效率。 SqlToy-ORM的主要特性包括: 1. **轻量级**:SqlToy-ORM设计精简,不依赖大型...
1 sqltoy-orm是什么 sqltoy-orm是比hibernate+myBatis(plus)更加贴合项目的orm框架(依赖spring),具有jpa式的对象CRUD的同时具有比myBatis(plus)更直观简洁性能强大的查询功能。 支持以下数据库: oracle 11g+ db2 ...
sqltoy-orm是比hibernate+myBatis更加贴合项目的orm框架,具有hibernate增删改的便捷性同时也具有比myBatis更加灵活优雅的自定义sql查询功能。 sqltoy-orm支持以下数据库: oracle 从oracle11g到19c db2 9.5+,建议从...
为您提供sqltoy-orm框架系统下载,sqltoy-orm是比hibernate+myBatis更加贴合项目的orm框架,具有hibernate增删改的便捷性同时也具有比myBatis更加灵活优雅的自定义sql查询功能。sqltoy-orm支持以下数据库:oracle 从...
SqlToy-ORM框架系统是Java开发中的一个轻量级对象关系映射(ORM)解决方案,主要目的是简化数据库操作,提高开发效率。版本v5.2.65是该框架的一个更新迭代,通常会包含性能优化、新功能添加或已知问题的修复。在这个...
sqltoy-orm是比hibernate+myBatis(plus)更加贴合项目的orm框架(依赖spring),具有jpa式的对象CRUD的同时具有比myBatis(plus)更直观简洁性能强大的查询功能,越复杂优势越凸显。Java真正智慧的ORM框架,除具有JPA功能...
sqltoy-orm 快速上手项目 quickstart只演示了部分功能,核心是让大家快速上手,详细功能参见文档 理论上来sqltoy可以解决您项目上全部数据库交互,我们的erp、数据平台、电商平台已经验证了这一点 学习步骤 1. 配置...
SQLToy ORM(Object-Relational Mapping)框架是Java开发中的一个重要工具,它为开发者提供了方便的数据访问层解决方案,大大简化了数据库操作。SQLToy v4.19.12版本是其最新迭代,旨在提供更稳定、高效和易用的特性...
为您提供sqltoy-orm框架系统下载,sqltoy-orm是比hibernate+myBatis更加贴合项目的orm框架,具有hibernate增删改的便捷性同时也具有比myBatis更加灵活优雅的自定义sql查询功能。sqltoy-orm支持以下数据库:oracle 从...
为您提供sqltoy-orm框架系统下载,sqltoy-orm是比hibernate+myBatis更加贴合项目的orm框架,具有hibernate增删改的便捷性同时也具有比myBatis更加灵活优雅的自定义sql查询功能。sqltoy-orm支持以下数据库:oracle 从...
为您提供sqltoy-orm框架系统下载,sqltoy-orm是比hibernate+myBatis更加贴合项目的orm框架,具有hibernate增删改的便捷性同时也具有比myBatis更加灵活优雅的自定义sql查询功能。sqltoy-orm支持以下数据库:oracle 从...
在 `hsweb-easy-orm-master` 压缩包中,通常会包含项目的源代码、文档、配置文件等资源。开发者可以解压这个文件,研究其内部结构,学习如何集成 HSWeb-Easy-ORM 到自己的项目中。通常,源码会分为几个主要部分:...
SQLToy ORM框架系统v5.2.61是一个高效、易用的数据库操作工具,它的动态SQL功能和多数据库兼容性使其在实际开发中具有很高的价值。对于开发者来说,熟练掌握SQLToy不仅能提升开发效率,也能让数据库操作变得更加灵活...
sqltoy-orm是比hibernate+myBatis更加贴合项目的orm框架,具有hibernate增删改的便捷性同时也具有比myBatis更加灵活优雅的自定义sql查询功能。 sqltoy-orm支持以下数据库: oracle 从oracle11g到19c db2 9.5+,建议从...
赠送jar包:spring-orm-5.0.8.RELEASE.jar; 赠送原API文档:spring-orm-5.0.8.RELEASE-javadoc.jar; 赠送源代码:spring-orm-5.0.8.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-orm-5.0.8.RELEASE.pom;...
Spring-ORM是Spring框架的一部分,主要负责数据库操作的抽象和集成,它支持多种持久层技术,如Hibernate、JPA、iBatis等。通过阅读和理解Spring-ORM的源码,我们可以深入理解Spring如何与ORM(对象关系映射)框架...
spring-orm-4.1.6.RELEASE.jar(SSH配置文件包jar)欢迎下载!(SSH配置文件包jar)欢迎下载!
Sharp-ORM 2007 实现数据库与C#类的无缝集成。 通过Sharp-ORM自动生成数据库到类的代码,采用三层体系结构设计,屏蔽具体的数据库产品。生成的类可通过自定义的业务逻辑进行扩展。 通过ORM让程序员彻底摆脱书写SQL的...
sql插件已经停止更新)合作与开放欢迎开放者参与到sqltoy的开发和维护中来,可以加入QQ群替换加入sqltoy开发者行列sqltoy希望可以捐赠给开源组织和企业,希望共同发展成拥有中国智慧,面向更广泛的用户的ORM框架1....