Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Detecting and Reporting Object-Relational MappingProblems: An Industrial Report
Search
Gustavo Pinto
September 19, 2019
Research
1
120
Detecting and Reporting Object-Relational MappingProblems: An Industrial Report
Gustavo Pinto
September 19, 2019
Tweet
Share
More Decks by Gustavo Pinto
See All by Gustavo Pinto
Apoiando pessoas programadoras com deficiência: Lições aprendidas na Zup Innovation
gustavopinto
0
35
5 coisas que todo dev deveria saber Para criar aplicações com GenAI
gustavopinto
0
40
Large Language Models for Education: Grading Open-Ended Questions Using ChatGPT
gustavopinto
0
55
Cognitive Driven Development: A Research Agenda
gustavopinto
0
37
The Infinite Academic Game
gustavopinto
0
32
[ESEM 2022] To What Extent Cognitive Driven Development Improves Code Readability
gustavopinto
0
74
Caminhos e desafios para a pesquisa em Computação (ou como se manter produtivo) na Região Norte
gustavopinto
2
270
How Open is the SBES PC Community
gustavopinto
0
70
REST or GraphQL? A Performance Comparative Study
gustavopinto
0
210
Other Decks in Research
See All in Research
「歴史的農業環境閲覧システム」と「迅速測図」について
wata909
1
590
HP (Hitto Point: 筆頭ポイント)
tanichu
0
680
メタ動画データセットによる動作認識の現状と可能性
yuyay
0
180
リサーチに組織を巻き込むための「準備8割」の話
terasho
0
470
フルリモートワークでのスクラムのスケール
kmorita1111
2
1k
First Authorに俺はなるっ!! IROS’23 CCC2023 FY
shota_nishiyama
0
170
Azure Arc-enabled Serversを利用した ハイブリッド・マルチクラウド環境の管理 / Managing Hybrid Multi-cloud Environments with Azure Arc-enabled Servers
nttcom
0
210
Combating Misinformation in the age of LLMs
teacherpeterpan
0
130
脳卒中患者・家族からみた循環器病対策推進基本計画の進捗に関する調査
japanstrokeassociation
0
530
眠眠ガチャ:ガチャを活用した睡眠意欲向上アプリの開発 / EC71inui
yumulab
0
140
[Human-AI Decision Making勉強会] 説明の更新はユーザにどのような影響をもたらすか
okoso
1
170
LiDARセキュリティ最前線
kentaroy47
0
270
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
354
18k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Art, The Web, and Tiny UX
lynnandtonic
288
19k
Practical Orchestrator
shlominoach
181
9.7k
How to Ace a Technical Interview
jacobian
272
22k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
321
20k
What the flash - Photography Introduction
edds
64
11k
Testing 201, or: Great Expectations
jmmastey
27
6.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
344
19k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Rails Girls Zürich Keynote
gr2m
91
13k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
115
18k
Transcript
Detecting and Reporting Object-Relational Mapping Problems: An Industrial Report Marcos
Nazário @gustavopinto Gustavo Pinto Rodrigo Bonifácio Eduardo Guerra
@gustavopinto ORM Application Code Database
@gustavopinto @Entity public class Color { private String code; private
String name; private Boolean enable; }
@gustavopinto @Entity @Table(schema = "public", name = "COLOR") public class
Color { private String code; private String name; private Boolean enable; }
@gustavopinto @Entity @Table(schema = "public", name = "COLOR") public class
Color { @Column private String code; @Column private String name; @Column private Boolean enable; }
@gustavopinto @Entity @Table(schema = "public", name = "COLOR") public class
Color { @Column(name = "CODE", nullable = false) private String code; @Column(name = "NAME", length = 80, nullable = false) private String name; @Column(name = "ENABLE", nullable = false) private Boolean enable; }
@gustavopinto @Entity @Table(schema = "public", name = "COLOR") public class
Color { @Column(name = "CODE", nullable = false) private String code; @Column(name = "NAME", length = 80, nullable = false) private String name; @Column(name = "ENABLE", nullable = false) private Boolean enable; }
@gustavopinto @Entity @Table(schema = "public", name = "COLOR") public class
Color { @Column(name = "CODE", nullable = false) private String code; @Column(name = "NAME", length = 80, nullable = false) private String name; @Column(name = "ENABLE", nullable = false) private Boolean enable; }
@gustavopinto @Entity @Table(schema = "public", name = "COLOR") public class
Color { @Column(name = "CODE", nullable = false) private String code; @Column(name = "NAME", length = 80, nullable = false) private String name; @Column(name = "ENABLE", nullable = false) private Boolean enable; }
@gustavopinto @Entity @Table(schema = "public", name = "COLOR") public class
Color { @Id @Column(name = "CODE", nullable = false) private String code; @Column(name = "NAME", length = 80, nullable = false) private String name; @Column(name = "ENABLE", nullable = false) private Boolean enable; }
@gustavopinto @Entity @Table(schema = "public", name = "COLOR") public class
Color { @Id @Column(name = "CODE", nullable = false) private String code; @Column(name = "NAME", length = 80, nullable = false) private String name; @Column(name = "ENABLE", nullable = false) private Boolean enable; }
@gustavopinto @Entity @Table(schema = "public", name = "COLOR") public class
Color { @Id @Column(name = "CODE", nullable = false) private String code; @Column(name = "NAME", length = 80, nullable = false) private String name; @Column(name = "ENABLE", nullable = false) private Boolean enable; }
@gustavopinto @Entity @Table(schema = "public", name = "COLOR") public class
Color implements Serializable { @Id @Column(name = "CODE", nullable = false) private String code; @Column(name = "NAME", length = 80, nullable = false) private String name; @Column(name = "ENABLE", nullable = false) private Boolean enable; }
@gustavopinto We catalogued 12 ORM-related problems
@gustavopinto We implemented this catalog in a static analysis tool
@gustavopinto We implemented this catalog in a static analysis tool
Finds the problems Suggests the fix
@gustavopinto We implemented this catalog in a static analysis tool
We are using this tool for over 5 years now Finds the problems Suggests the fix
@gustavopinto Could others take advantage of our tool?
@gustavopinto
@gustavopinto We conducted a developer experience (DX) study with 13
developers
@gustavopinto We conducted a developer experience (DX) study with 13
developers 3 students, 10 from industry 6 with 7+ years with ORM experience 2 with no previous ORM experience
@gustavopinto
@gustavopinto 6 ORM tasks
@gustavopinto 6 ORM tasks
@gustavopinto 6 ORM tasks
@gustavopinto All participants completed the experiment
@gustavopinto eases ORM modeling Every day I do object-relational mapping,
and this tool could help me to remember what is missing “ ”
@gustavopinto eases ORM modeling the tool is precise forces best
practices
@gustavopinto Little docs I found it quite difficult to find
help in the documentation. There is nothing on the web “ ”
@gustavopinto Little docs Custom annotations were not intuitive The tool
poses many constraints
None
None
None
None
None
None