More Related Content

ORM is a perfect anti-pattern

  1. /20@yegor256 1 what do you think?
  2. /20@yegor256 2 ORM is a perfect anti-pattern Yegor Bugayenko
  3. /20@yegor256 3 book.setTitle(“Object Thinking”); session.update(book); Book Session MySQL JDBC UPDATE book
 SET title = “Object Thinking”
 WHERE id = 555 book.getTitle(); statement.executeUpdate(); this.title
  4. /20@yegor256 4 Map attrs = new HashMap(); attrs.put(“title”, “Object Thinking”); book.updateAttributes(attrs); Book Base MySQL JDBC UPDATE book
 SET title = “Object Thinking”
 WHERE id = 555 statement.executeUpdate();
  5. /20@yegor256 5 it’s offensive
  6. /20@yegor256 6 SQL-speaking objects
  7. /20@yegor256 7 book.rename(“Object Thinking”); Book MySQL JDBC UPDATE book
 SET title = “Object Thinking”
 WHERE id = 555 statement.executeUpdate();
  8. /20@yegor256 8 JDBC, jOOQ, jcabi-jdbc
  9. /20@yegor256 9 public class Book { private final DataSource source; private final int id; Book(DataSource db, int id) { this.source = db; this.id = id; } public void rename(String title) { new JdbcSession(this.source) .sql(“UPDATE book SET title=? WHERE id=?”) .set(title) .set(this.id) .update(); } }
  10. /20@yegor256 10 www.yegor256.com