V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Braisdom  ›  全部回复第 28 页 / 共 31 页
回复总数  611
1 ... 20  21  22  23  24  25  26  27  28  29 ... 31  
2020-11-28 14:54:29 +08:00
回复了 Braisdom 创建的主题 Java Java ORM 中简洁的关联对象查询和分页查询
@php01 PHP 还是我十几年前写过,已经忘记它是个什么样子了,但我看了 laravel 的框架,还是存在很多问题
1 )模型与模型内的字段,应当是编程中的元素,而不应该是一个字符串
2 )它的很多元语已经脱离结构化的编程,虽然说每种语言都应有自己的编程元语,但在当然,我们应当遵循前人的命名规范,当然可以超越前人的思想
3 )它的表达式,还是不够完美,">",”<“ 这类太过怪异
2020-11-28 14:28:51 +08:00
回复了 Braisdom 创建的主题 Java Java ORM 中简洁的关联对象查询和分页查询
@hcymk2 感谢认可,往往认可我项目的人,都是经历过各种 ORM 框架的困扰,我经历太多了,实在忍无可忍了,才下定决心搞一个新的,
2020-11-28 14:24:38 +08:00
回复了 Braisdom 创建的主题 Java Java ORM 中简洁的关联对象查询和分页查询
@hantsy
首先,你先要理解为什么要动态生成,动态生成代码的目的是为了解决重复编码的问题,所谓 OOP 也只是站在简洁的代码基础上的。

OOP 只是一个理论的基础,它无法脱离现实,如果 OOP 会带来太多的重复代码,那么这样的编程也不具备效率。
编程理论有很多种理解的范式,它可以是一份工作,也可以是一份毕业论文,当然也可以是想象中的世界。

我的心中没有面向对象,也没有面向过程,更没有所谓的设计模式,我只有让自身的工作变得简单的想法,很淳朴的想法。若干年后,程序员的职业是否存在都是一个未知数...
2020-11-28 12:31:24 +08:00
回复了 Braisdom 创建的主题 Java Java ORM 中简洁的关联对象查询和分页查询
@liununu
你说法非常正确,讨论到问题的核心了
大都数业务中,一个 DomainModel 会对应数据库中的一张表,而 DomainModel 也就承担了基础的数据库访问能力,以及围绕该 DomainModel 产生的业务特性。

ObjectiveSQL 只是动态生成了所有数据库访问的能力,不需要额外编写代码就可以直接使用,减少重复的编码量,提升开发效率。

至于上面描述的复杂 SQL 的编程,只是在 DomainModel 中进行复杂的业务逻辑处理时所用的特性。

ObjectiveSQL 和 Spring 一样都是侵入原生的 Java Class,只不过 Spring 更加隐晦,你感觉不到,而 ObjectiveSQL 的侵入更加明显,而且与实际的业务代码进行结合。这就是和 Sping 本质的区别
2020-11-28 12:17:34 +08:00
回复了 Braisdom 创建的主题 Java Java ORM 中简洁的关联对象查询和分页查询
@hantsy 我在设计 ObjectiveSQL 时,已经忘记了 SQL 的存在,站在 Java 语言的基础上思考,如果通过 Java 语言更方便的查询和分析数据,这是本质
2020-11-28 12:15:42 +08:00
回复了 Braisdom 创建的主题 Java Java ORM 中简洁的关联对象查询和分页查询
@hantsy
贫血模型 与充血模型 本质上不重要,关键对开发来讲,你的效率有没有得到提升,思考问题要从实际出发。

不需要编写一行额外的代码,就能实现一张表的
1 )简单基于属性的查询
2 )关联对象查询
3 ) Validation
还有更多...
2020-11-28 12:12:49 +08:00
回复了 Braisdom 创建的主题 Java Java ORM 中简洁的关联对象查询和分页查询
@hantsy

是的它们两个都可以通过 Java 代码生成 SQL,但他们有致命的缺点。
1 ) Java 代码的生成需要手动编译,这样的话模型内容变化里,需要手动生成代码。
2 )算术运算符、比较运算符和逻辑运算都是通过方法的形式实现,这样会使 Java 代码过于复杂

举个简单的例子:

SQL 表达式:
(`T0`.`quantity` > 30) AND `T0`.`sales_at` BETWEEN '2020-10-10 00:00:00' AND '2020-10-30 23:59:59')

QueryDSL 和 JOOQ 中会是这样的

exp.and(table.quantity.gt(30), table.salesAt.between("2020-10-10 00:00:00", "2020-10-30 23:59:59")

而 ObjectiveSQL 中是这样的:

orderTable.quantity > 30 && orderTable.salesAt.between("2020-10-10 00:00:00", "2020-10-30 23:59:59")

你能看出区别吗?如果表达式再复杂一点呢?
2020-11-28 11:34:07 +08:00
回复了 Braisdom 创建的主题 Java Java ORM 中简洁的关联对象查询和分页查询
@wysnylc N+1 的问题已经解决了。


@hantsy 最关键我是不需要写代码的,哈哈
2020-11-28 11:33:32 +08:00
回复了 Braisdom 创建的主题 Java Java ORM 中简洁的关联对象查询和分页查询
@hantsy 哈哈,我和 QueryDSL 有本质的区别,有必要写个两者的区别,有兴趣看一下

https://github.com/braisdom/ObjectiveSql 文章的最后
2020-11-27 21:27:56 +08:00
回复了 Braisdom 创建的主题 推广 ObjectiveSQL 稳定版本 1.4.0 发布了
周五发布,感觉不是很合适呀,大家都有安排
2020-11-25 15:13:19 +08:00
回复了 ggjjl1 创建的主题 Java 请问大家,现在 Java 比较流行的 ORM 框架是哪些?
@GM 目前 1.3.9 版本是稳定版本,example 下有多种数据库的单元测试,基本覆盖了所有 case,最近在做分页查询,使用起比 MyBatis 方便很多,(我个人觉得,哈哈)
2020-11-25 15:11:45 +08:00
回复了 Braisdom 创建的主题 Java 历经 3 年,终于得以实现了
@Joker123456789 你的分析很到位,一个工具很难做到面面俱到,不太可能适应所有的场景,有舍才有得。
1 ) ObjectiveSQL 主要解决动态 SQL 的编程,所谓动态:也就是 SQL 结构很难通过字符串接近的形式实现,这种场景下,传统 SQL 想变为程序很困难,将这样的程序直接变成 SQL 也不容易,ObjectiveSQL 会通过单元测试的形式提供完成 SQL 。

2 )其实,程序员到底是看到 SQL 呢,还是还到 Java 一直是矛盾的中点,试想一下,如果没有 SQL 的存在,大家直看 Java 会是什么样的一种状态。
2020-11-24 13:20:45 +08:00
回复了 ggjjl1 创建的主题 Java 请问大家,现在 Java 比较流行的 ORM 框架是哪些?
https://github.com/braisdom/ObjectiveSql

你可以参考一与,比较新,但会及时响应,自卖自夸,有兴趣可以一起探讨,哈哈
2020-11-24 13:05:03 +08:00
回复了 Braisdom 创建的主题 Java 历经 3 年,终于得以实现了
@aguesuka 你说的很对,SQL 语言是一种已经被习惯的数据查询和分析语言,最初的设计是直接给人使用的,而不是为程序设计的,逻辑控制、强类型等程序化的概念的使用是需要专业训练的。

我挑战的是 SQL 语言在程序上的表现力,目前只是第一个版本,我的想法还没有充分彰显。

对权威的挑战必定会迎来更多人的挑战,这是正常的,没有对权威的挑战,这个时代也就不会进步了。
2020-11-24 12:47:37 +08:00
回复了 Braisdom 创建的主题 Java 历经 3 年,终于得以实现了
@CatTom 已经更新,可以按 readme 更新一下版本信息
2020-11-23 21:42:04 +08:00
回复了 Braisdom 创建的主题 Java 历经 3 年,终于得以实现了
@tt0411 其实我不是很喜欢 DSL 这个概念,按道理说 SQL 是一个 DSL,而 Java 是基于自身的抽象能力与表达能力使得 SQL 更便于逻辑控制。
当然,这是我个人的感觉,每个人有不同的背景,也会有不一样的认知,没有对与错,只是会用不同的方式进行工作而已。
2020-11-23 21:12:35 +08:00
回复了 Braisdom 创建的主题 Java 历经 3 年,终于得以实现了
@CatTom 抱歉,1.3.8 版本是我测试不充分,我调整了 pom 依赖,
2020-11-23 18:30:02 +08:00
回复了 Braisdom 创建的主题 Java 历经 3 年,终于得以实现了
@bxb100 老实说,性能指标还真的不好搞,主要因为 ObjectiveSQL 是一个无状态的框架,本身不存储任何东西,唯一需要验证的是内存泄露,SQL 的构造也都是字符串拼接,本质上不会有性能问题。
2020-11-23 17:54:14 +08:00
回复了 Braisdom 创建的主题 Java 历经 3 年,终于得以实现了
@bxb100 你所说的性能是指哪方面性能
2020-11-23 17:53:52 +08:00
回复了 Braisdom 创建的主题 Java 历经 3 年,终于得以实现了
@CatTom 这两天一直写分页的,忘记发布一个 pom 了,不好意思,正在搞。
1 ... 20  21  22  23  24  25  26  27  28  29 ... 31  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2594 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 16ms · UTC 10:16 · PVG 18:16 · LAX 02:16 · JFK 05:16
Developed with CodeLauncher
♥ Do have faith in what you're doing.