`
zhongxuchen
  • 浏览: 33429 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

sqltoy-orm 增删改和load操作介绍

 
阅读更多

上一篇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):

  • 对象加载:
  1. load单个对象加载包含:load(final Serializable entity);load(final Serializable entity, final LockMode lockMode)、load(entity,lockMode,dataSource)三个方法。
  2. loadCascade级联加载:loadCascade(Serializable entity, LockMode lockMode)和loadCascade(Serializable entity, Class[] cascadeTypes, LockMode lockMode)两种查询,考虑性能和灵活性sqltoy将级联加载跟对象自身加载分离开来,同时可以指定级联加载的子对象进行精确加载,避免没有必要的性能消耗。
  3. loadAll批量集合加载:loadAll(final List<?> entities, final LockMode lockMode) 进行对象批量加载。loadAll的效率其实要比hibernate的要高,sqltoy是通过批量查询来实现的。
  4. loadAllCascade批量级联加载:loadAllCascade(final List<?> entities, final Class[] cascadeTypes, final LockMode lockMode);批量级联加载sqltoy全部采用了批量查询方式,不同于hibernate循环集合通过单个对象进行级联加载,效率得到了很大提升。
  • 对象增加save操作:save对象会连同子表对象进行级联保存。
  1. 单个对象保存并返回主键值:Object save(final Serializable entity) 或save(final Serializable entity, final DataSource dataSource):指定数据源保存对象。
  2. 批量保存:saveAll(final List<?> entities)或:saveAll(entities,reflectPropertyHandler,dataSource)。
  3. 批量保存忽视已经存在的:saveAllNotExist(final List<?> entities)。
  • 对象修改update操作:sqltoy的update操作是非常有特色的,完全屏蔽了hibernate的缺陷考虑到了实际业务场景的需要。
  1. update(Serializable entity):自动只修改entity对象不为null的属性(场景:工单处理,各个环节只修改部分字段),从而避免对数据库中其他字段的修改。(相对于hibernate则必须先load然后再update才能实现此逻辑,减少了一次查询从而提升了性能)
  2. updateDeeply(final Serializable entity):深度修改,entity对象属性无论是null还是非null一律修改到数据库表对应字段中。
  3. update(final Serializable entity, final String[] forceUpdateProps):修改对象,并指定哪些属性为强制修改字段。相对于1和2,做到了一些平衡和补充。结合使用非常贴切项目的各种场景。
  4. updateAll(final List<?> entities) ,批量修改:以第一条记录的非null的值为依据进行批量修改。
  5. updateAll(final List<?> entities, final String[] forceUpdateProps),指定字段进行批量强制修改。
  6. updateAllDeeply(final List<?> entities, final ReflectPropertyHandler reflectPropertyHandler),批量深度修改。
  7. updateCascade(final Serializable entity, final String[] forceUpdateProps,final Class[] forceCascadeClasses, final HashMap<Class, String[]> subTableForceUpdateProps),级联修改,可以指定需要级联修改的子表和子表需要强制修改的属性。
  • 保存或修改saveOrUpdate操作:底层基于不同数据库方言如:merge into 或insert ON DUPLICATE KEY UPDATE  机制,极大的提升了性能。
  1. saveOrUpdate(final Serializable entity):对象保存或修改(已经存在则修改)
  2. saveOrUpdate(final Serializable entity, final String[] forceUpdateProps):保存或修改(针对修改指定哪些字段为强制修改),相对hibernate或mybatis则更加灵活,给开发者带来了更多的选择。
  3. saveOrUpdateAll(final List<?> entities)、saveOrUpdateAll(final List<?> entities, final String[] forceUpdateProps) :批量保存或修改。
  • 对象删除操作:delete或deleteAll。
  1. delete(final Serializable entity):删掉单挑记录,同时会自动根据外键删除级联的子表相关数据。
  2. deleteAll(final List<?> entities):批量删除记录,这个删除相较于hibernate性能更高,底层采用批量删除,尤其子表数据删除也是批量操作,不同于hibernate的循环删除子表。
  • 唯一性验证:isUnique,传递对象判断对象是否已经存在。经常在数据保存前需要判断数据库中是否已经存在,从而提前进行提醒,让交互更加友好(尤其页面维护数据,当维护一个数值后通过ajax判断是否已经存在,避免提交后通过异常来方式提醒用户)。
  1. isUnique(final Serializable entity):根据主键判断是已经重复。
  2. isUnique(final Serializable entity, final String[] paramsName):指定需要判断重复的属性字段进行验证唯一性。
  • 查询并锁定再进行修改并返回结果(一次性交互中完成)
  1. List updateFetch(final QueryExecutor queryExecutor, final UpdateRowHandler updateRowHandler):锁定记录并进行修改,并返回结果,在并发抢占模式下非常有用,如餐厅点桌子,任务竞争性领取等,谁先执行先锁定则先修改先获取(修改后状态发生变化别人就会抢占失败)。 

 

 

 

分享到:
评论

相关推荐

    sqltoy-orm是比JPA+MyBatis更加贴合项目的orm框架(依赖spring)

    综上所述,SqlToy-ORM是针对Java项目的一款优秀ORM解决方案,尤其适合那些期望在Spring环境下拥有高效率和便捷性的数据操作。通过其独特的设计理念和丰富的功能,SqlToy-ORM可以帮助开发者更高效地完成数据访问层的...

    sqltoy-orm框架系统

    SqlToy-ORM旨在结合Hibernate的便利性和MyBatis的灵活性,使得开发者在处理数据库操作时能够更加贴合实际项目需求,提高开发效率。 SqlToy-ORM的主要特性包括: 1. **轻量级**:SqlToy-ORM设计精简,不依赖大型...

    sqltoy-orm框架系统是比hibernate+myBatis更加贴合项目的orm框架.rar

    1 sqltoy-orm是什么 sqltoy-orm是比hibernate+myBatis(plus)更加贴合项目的orm框架(依赖spring),具有jpa式的对象CRUD的同时具有比myBatis(plus)更直观简洁性能强大的查询功能。 支持以下数据库: oracle 11g+ db2 ...

    sqltoy-orm框架系统-其他

    sqltoy-orm是比hibernate+myBatis更加贴合项目的orm框架,具有hibernate增删改的便捷性同时也具有比myBatis更加灵活优雅的自定义sql查询功能。 sqltoy-orm支持以下数据库: oracle 从oracle11g到19c db2 9.5+,建议从...

    sqltoy-orm框架系统 v4.17.0

    为您提供sqltoy-orm框架系统下载,sqltoy-orm是比hibernate+myBatis更加贴合项目的orm框架,具有hibernate增删改的便捷性同时也具有比myBatis更加灵活优雅的自定义sql查询功能。sqltoy-orm支持以下数据库:oracle 从...

    sqltoy-orm框架系统 v5.2.65.zip

    SqlToy-ORM框架系统是Java开发中的一个轻量级对象关系映射(ORM)解决方案,主要目的是简化数据库操作,提高开发效率。版本v5.2.65是该框架的一个更新迭代,通常会包含性能优化、新功能添加或已知问题的修复。在这个...

    sqltoy-orm是比hibernate+myBatis(plus)更加贴合项目的orm框架(依赖spring)

    sqltoy-orm是比hibernate+myBatis(plus)更加贴合项目的orm框架(依赖spring),具有jpa式的对象CRUD的同时具有比myBatis(plus)更直观简洁性能强大的查询功能,越复杂优势越凸显。Java真正智慧的ORM框架,除具有JPA功能...

    java开发erp源码下载-sqltoy-quickstart:sqltoy-orm快速上手学习演示项目

    sqltoy-orm 快速上手项目 quickstart只演示了部分功能,核心是让大家快速上手,详细功能参见文档 理论上来sqltoy可以解决您项目上全部数据库交互,我们的erp、数据平台、电商平台已经验证了这一点 学习步骤 1. 配置...

    sqltoy-orm框架系统 v4.19.12.zip

    SQLToy ORM(Object-Relational Mapping)框架是Java开发中的一个重要工具,它为开发者提供了方便的数据访问层解决方案,大大简化了数据库操作。SQLToy v4.19.12版本是其最新迭代,旨在提供更稳定、高效和易用的特性...

    sqltoy-orm框架系统 v4.17.3

    为您提供sqltoy-orm框架系统下载,sqltoy-orm是比hibernate+myBatis更加贴合项目的orm框架,具有hibernate增删改的便捷性同时也具有比myBatis更加灵活优雅的自定义sql查询功能。sqltoy-orm支持以下数据库:oracle 从...

    hsweb-easy-orm, 简单的orm工具,为动态表单而生.zip

    在 `hsweb-easy-orm-master` 压缩包中,通常会包含项目的源代码、文档、配置文件等资源。开发者可以解压这个文件,研究其内部结构,学习如何集成 HSWeb-Easy-ORM 到自己的项目中。通常,源码会分为几个主要部分:...

    sqltoy-orm框架系统 v4.16.10

    为您提供sqltoy-orm框架系统下载,sqltoy-orm是比hibernate+myBatis更加贴合项目的orm框架,具有hibernate增删改的便捷性同时也具有比myBatis更加灵活优雅的自定义sql查询功能。sqltoy-orm支持以下数据库:oracle 从...

    sqltoy-orm框架系统 v4.17.7

    为您提供sqltoy-orm框架系统下载,sqltoy-orm是比hibernate+myBatis更加贴合项目的orm框架,具有hibernate增删改的便捷性同时也具有比myBatis更加灵活优雅的自定义sql查询功能。sqltoy-orm支持以下数据库:oracle 从...

    archive_ sqltoy-orm框架系统 v5.2.61 [江西新余电信].zip.zip

    SQLToy ORM框架系统v5.2.61是一个高效、易用的数据库操作工具,它的动态SQL功能和多数据库兼容性使其在实际开发中具有很高的价值。对于开发者来说,熟练掌握SQLToy不仅能提升开发效率,也能让数据库操作变得更加灵活...

    sqltoy-orm框架系统源代码

    sqltoy-orm是比hibernate+myBatis更加贴合项目的orm框架,具有hibernate增删改的便捷性同时也具有比myBatis更加灵活优雅的自定义sql查询功能。 sqltoy-orm支持以下数据库: oracle 从oracle11g到19c db2 9.5+,建议从...

    spring-orm-5.0.8.RELEASE-API文档-中英对照版.zip

    赠送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-ORM是Spring框架的一部分,主要负责数据库操作的抽象和集成,它支持多种持久层技术,如Hibernate、JPA、iBatis等。通过阅读和理解Spring-ORM的源码,我们可以深入理解Spring如何与ORM(对象关系映射)框架...

    spring-orm-4.1.6.RELEASE.jar

    spring-orm-4.1.6.RELEASE.jar(SSH配置文件包jar)欢迎下载!(SSH配置文件包jar)欢迎下载!

    Sharp-ORM 2007 1.0

    Sharp-ORM 2007 实现数据库与C#类的无缝集成。 通过Sharp-ORM自动生成数据库到类的代码,采用三层体系结构设计,屏蔽具体的数据库产品。生成的类可通过自定义的业务逻辑进行扩展。 通过ORM让程序员彻底摆脱书写SQL的...

    sagacity-sqltoy:基于Java语言比mybatis更实用的orm框架,支持mysql,oracle,postgresql,sqlserver,db2,dm,mongodb,elasticsearch,tidb,guassdb,kingbase,oceanbase,greenplum

    sql插件已经停止更新)合作与开放欢迎开放者参与到sqltoy的开发和维护中来,可以加入QQ群替换加入sqltoy开发者行列sqltoy希望可以捐赠给开源组织和企业,希望共同发展成拥有中国智慧,面向更广泛的用户的ORM框架1....

Global site tag (gtag.js) - Google Analytics