V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Braisdom  ›  全部回复第 22 页 / 共 31 页
回复总数  611
1 ... 14  15  16  17  18  19  20  21  22  23 ... 31  
2020-12-17 22:04:45 +08:00
回复了 Braisdom 创建的主题 程序员 凡事就怕问为什么(认识的升级)系列一
@Kaiv2 你的想法很好,我给 Oracle 发了邮件,但那帮人比较传统,更多是尊重传统,Java 应该不太会支持,只能通过其它方式了。
2020-12-17 21:54:48 +08:00
回复了 Braisdom 创建的主题 程序员 凡事就怕问为什么(认识的升级)系列一
@yukong 细聊
2020-12-17 21:53:53 +08:00
回复了 Braisdom 创建的主题 程序员 凡事就怕问为什么(认识的升级)系列一
@l00t @yule111222 @haosamax

我来回复一下,但这只是我的理解,大家可以观摩:

1 )面向对象中,有一个比较基础的概念,所有依赖都是抽象的,这也就是说所有需要外部类协调完成的工作都是接口,这也就 Spring 的概念,依赖都是通过接口形式注入,保证业务逻辑的动态性,Server, Mapper 等都是接口(当然有些是没有必要的)。

2 )约束:每个子模块对外部的输入都是有一定性约束的,Java Interface 起到约束行为注入的约束,在 ObjectiveSQL 中 ModelDescriptor 就是很好的体现,子模块需要的信息通过 Descriptor 的形式进行注入。

3 )规范定义:Java Servlet, JMS 是最好的示例,针对一组特性完整的定义,其实是一组接口,接口定义的只是概念,而不关心具体的实现。

在我们实际的工作中,Java Interface 的定义更多的是依赖的定义,重要的是我们对职责的分离,这是面向对象设计的基础,我先简单描述,大家有不想法可以挑战。
2020-12-17 17:18:46 +08:00
回复了 Braisdom 创建的主题 程序员 凡事就怕问为什么(认识的升级)系列一
@l00t
1 )日志打印,异常的处理,后续我会介绍,远远不是个人偏好,期间有经过大量程序员的错误所积累的逻辑和规律。
2 )体系化的知识里只告诉你如何定义?怎么使用?至于为什么也是在大量实践过程中积累的。

个人偏好的确会用不同的方法使用,但背后的经验和规律则大致相同,所有的经验和规律都来自惨痛的经验。

既然你已经提出挑战,我们就讨论一下:“为什么要定义一个 Java Inteface ?”,大家也可以观点...
2020-12-17 16:49:39 +08:00
回复了 Braisdom 创建的主题 程序员 凡事就怕问为什么(认识的升级)系列一
@l00t 提提你的想法,贴出来,让我学习,我的目的不是传教,自我我的提升也很重要,
2020-12-17 16:08:22 +08:00
回复了 Braisdom 创建的主题 程序员 凡事就怕问为什么(认识的升级)系列一
@zhazi 那些都太技术了,多看几次,多试几次都能学会的,都是“术”,正在写过程序的人,有深刻理解的人应该都能回答上面的问题,是否全面就另说了。
2020-12-17 15:52:14 +08:00
回复了 Braisdom 创建的主题 程序员 凡事就怕问为什么(认识的升级)系列一
@IrisFrankie
@DeepDarkVan

感谢你们的回复
2020-12-16 11:08:52 +08:00
回复了 Braisdom 创建的主题 Java 分析一下 Java ORM 框架的原理,大家怎么看?
@brezp 是本人的漫画版本
2020-12-16 09:48:14 +08:00
回复了 Braisdom 创建的主题 Java 分析一下 Java ORM 框架的原理,大家怎么看?
@levon 您是 V 站的老人,感谢您的鼓励,我会继续努力,不能只停留在到处推广,而是真正的做好项目。
2020-12-15 22:27:16 +08:00
回复了 Braisdom 创建的主题 Java 分析一下 Java ORM 框架的原理,大家怎么看?
@cloudhuang
1 )本质上 ObjectiveSQL 还是 SQL 的拼接,就像所有的应用层网络协议一下,底层还是 TCP/IP,目前我还不能超越 SQL,但我有更深层次的想法,目前还不成熟。

2 ) SQL 域指的就是传统 SQL 编程,Java Class 中的 name 就有两层含义,一层是表示传统 Java Bean,只能承载 String 类型的值,另一层,就是需要承载作为 SQL 语句抽象后的 Column 含义,它的行为和状态是 String 不具备的,例如:

User.Table user = User.asTable();
Select select = new Select();

select.project(count())
.from(user)
.groupBy(user.name.).orderBy(user.name.asc());

这里的 user.name 其实是 Column 的实例。
2020-12-15 21:55:48 +08:00
回复了 Braisdom 创建的主题 Java 分析一下 Java ORM 框架的原理,大家怎么看?
@guyeu 立场不同,说法就不同,经历不同,也会有不同的说法。我只是朴素的阐述自己的理论,ORM 的出现已经 20 多年了,DSL 的理解有很多层,不同人有不同的理解。
另外说一句,我很不喜欢发明新说法,Java 领域有太多新概念了,“语义表达的双重性” 是我的理解,当然也有其它的说明法,我只是表达一个 Java Field 需要表达两种不同的语义。语法的一致性是一个事实,是我用 Java 的运算符重载解决的特性,大家可以有不同的理解。

欢迎挑战,最近在推广,我很希望听到不同的意见,感谢各位。
2020-12-15 16:36:54 +08:00
回复了 Braisdom 创建的主题 Java 分析一下 Java ORM 框架的原理,大家怎么看?
@zhangbohun 有道理,自己的项目希望更多人知道,开源的肯定不太会花费用去打广告,我也只能用自己的知识去交换眼球,希望能够理解。
2020-12-15 16:34:14 +08:00
回复了 Braisdom 创建的主题 Java 分析一下 Java ORM 框架的原理,大家怎么看?
@cloudhuang 更直白一点的说,
class User {
private String name;
}

class UserDO {
private Column name;
}

Java 域中,name 只能用来存储状态,类型为 String
SQL 域中,name 是另一个类型 Column, Column 中有状态和行为

传统的方法就是静态生成另一个类 UserDO, 而 ObjectiveSQL 中则不需要,是动态生成。
2020-12-15 16:17:07 +08:00
回复了 Braisdom 创建的主题 Java 分析一下 Java ORM 框架的原理,大家怎么看?
@cloudhuang 当然不是,我再补充一下(后续有必要写一份文档,详细说明):
1 )语义的双重性:其实就是程序的开发中,同一个编程元素要表达两个不同的含义,例如:一个 Class 中的 Field 在 Java 中是一种类型的数据或状态的载体,例如:class User 中 private String name,从语义上讲,它只能保存 User 实例中的 name 的状态,如果将 User 的实例用于拼接 SQL,这个 name 其实是对应的 users 表中的一个 column, 这种语义的表达,在目前的编程模型中是无法做的,因为 SQL 域中,name 是另一种类型 Column, Column 也有自身的状态和行为,例如:user.name.asc(), user.name.orderBy() 等。这就需要两种不同的定义方式,User, UserDO 两种不同的定义方式表达同一个模型定义, 这也就导致了重复编码和静态生成的变更问题。

2) 至于 Java 的运算符重载,你可以参考: https://www.v2ex.com/t/734572#reply103
里面有详细的描述和讨论。
2020-12-15 14:02:41 +08:00
回复了 Braisdom 创建的主题 Java 分析一下 Java ORM 框架的原理,大家怎么看?
@gowk 你这个 tag 我很喜欢... 过段时间我准备换一个,哈哈
2020-12-15 13:47:33 +08:00
回复了 Braisdom 创建的主题 Java 分析一下 Java ORM 框架的原理,大家怎么看?
@hantsy 是的,我是做传统线下零售数据系统的,不同类型的数据或不同访问频率的数据用不同的存储方式是很正常的,Cypher 这个我还真得仔细研究一下,Redis 和 Mongo 我都用了,Noe4j 没玩过,值得借鉴
2020-12-15 13:35:08 +08:00
回复了 Braisdom 创建的主题 Java 分析一下 Java ORM 框架的原理,大家怎么看?
@hantsy 恩,不同类型的数据存储方式,和不同类型外部访问和计算方式,一直在挑战传统关系型数据,早些年 Google 为主发起的 NoSQL 系列数据库风头很盛。
我个人觉得,分久必合,合久必分,关系数据库统治数据库领域好多年了,在不同行业,不同数据和计算特征的领域会有新型的数据库出现,但能不能超越由关系数学这种高度抽象的概念衍生的关系计算模型就难说了。

我公司的项目里用了 Apache Calcite 作为融合数据的计算引擎,解决不同存储格式的数据统一计算就是一个很好的应用。
2020-12-15 13:13:04 +08:00
回复了 Braisdom 创建的主题 Java 分析一下 Java ORM 框架的原理,大家怎么看?
@neochen13 兄弟对不住了,我也只是想写一点干货,也是我的理解,希望对你有价值,你可以忽略后面的链接


@wangyanrui 对象化的数据库很多年前就已经有人在尝试了,但也难以超越关系计算的理论,总是绕不开呀。
2020-12-15 13:08:01 +08:00
回复了 myqa 创建的主题 Java 感觉 spring jpa 使用越来越广泛了
@hantsy 是的,我接触很多国外的公司基本都是 JPA,很少有 mybatis 的。
2020-12-15 13:06:18 +08:00
回复了 Braisdom 创建的主题 Java 分析一下 Java ORM 框架的原理,大家怎么看?
@wangyanrui 感谢兄弟,面向对象和数据库本质上是不冲突的,数据库的特性以对象关系型计算为基础,仅仅是一个数据存储和计算引擎,与语言的特性关系不是太大。
1 ... 14  15  16  17  18  19  20  21  22  23 ... 31  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2608 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 18ms · UTC 10:49 · PVG 18:49 · LAX 02:49 · JFK 05:49
Developed with CodeLauncher
♥ Do have faith in what you're doing.