home.social

#orm — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #orm, aggregated by home.social.

  1. Пишем свой SQL query builder на Python: DSL, кеширование в Redis и защита от инъекций

    Объектный построитель SQL-запросов без ORM и моделей. Позволяет писать сложные SQL-запросы в виде цепочек Python-методов (table[‘person’].filter(…).join(…).get()) и получать результат в виде списка словарей. Под капотом — параметризованные запросы для защиты от инъекций, продуманная система кеширования с инвалидацией по таблицам (in-memory и Redis), поддержка синхронного и асинхронного кода из коробки. Для тех случаев, когда ORM избыточна, а сырой SQL небезопасен.

    habr.com/ru/articles/1029968/

    #python #sql #orm #dsl #caching #asyncio #sqlинъекция #query_cache #django #redis

  2. Пишем свой SQL query builder на Python: DSL, кеширование в Redis и защита от инъекций

    Объектный построитель SQL-запросов без ORM и моделей. Позволяет писать сложные SQL-запросы в виде цепочек Python-методов (table[‘person’].filter(…).join(…).get()) и получать результат в виде списка словарей. Под капотом — параметризованные запросы для защиты от инъекций, продуманная система кеширования с инвалидацией по таблицам (in-memory и Redis), поддержка синхронного и асинхронного кода из коробки. Для тех случаев, когда ORM избыточна, а сырой SQL небезопасен.

    habr.com/ru/articles/1029968/

    #python #sql #orm #dsl #caching #asyncio #sqlинъекция #query_cache #django #redis

  3. Пишем свой SQL query builder на Python: DSL, кеширование в Redis и защита от инъекций

    Объектный построитель SQL-запросов без ORM и моделей. Позволяет писать сложные SQL-запросы в виде цепочек Python-методов (table[‘person’].filter(…).join(…).get()) и получать результат в виде списка словарей. Под капотом — параметризованные запросы для защиты от инъекций, продуманная система кеширования с инвалидацией по таблицам (in-memory и Redis), поддержка синхронного и асинхронного кода из коробки. Для тех случаев, когда ORM избыточна, а сырой SQL небезопасен.

    habr.com/ru/articles/1029968/

    #python #sql #orm #dsl #caching #asyncio #sqlинъекция #query_cache #django #redis

  4. Пишем свой SQL query builder на Python: DSL, кеширование в Redis и защита от инъекций

    Объектный построитель SQL-запросов без ORM и моделей. Позволяет писать сложные SQL-запросы в виде цепочек Python-методов (table[‘person’].filter(…).join(…).get()) и получать результат в виде списка словарей. Под капотом — параметризованные запросы для защиты от инъекций, продуманная система кеширования с инвалидацией по таблицам (in-memory и Redis), поддержка синхронного и асинхронного кода из коробки. Для тех случаев, когда ORM избыточна, а сырой SQL небезопасен.

    habr.com/ru/articles/1029968/

    #python #sql #orm #dsl #caching #asyncio #sqlинъекция #query_cache #django #redis

  5. Just recorded my talk for @posetteconf 2026:
    "PostgreSQL Generated Columns by Example" 🐘

    Tune in on June 17th to watch my talk: 📆
    posetteconf.com/2026/talks/pos

    Check also the schedule for many more PostgreSQL talks!👇 posetteconf.com/2026/

    Thanks @clairegiordano for the support during the recording.🙏

    #PostgreSQL #Python #Django #ORM #GeneratedColumn #GeneratedField #PosetteConf #Postgres #Database #Community #OpenSource

    CC @pycon @django @ubuntu

  6. Just recorded my talk for @posetteconf 2026:
    "PostgreSQL Generated Columns by Example" 🐘

    Tune in on June 17th to watch my talk: 📆
    posetteconf.com/2026/talks/pos

    Check also the schedule for many more PostgreSQL talks!👇 posetteconf.com/2026/

    Thanks @clairegiordano for the support during the recording.🙏

    CC @pycon @django @ubuntu

  7. Just recorded my talk for @posetteconf 2026:
    "PostgreSQL Generated Columns by Example" 🐘

    Tune in on June 17th to watch my talk: 📆
    posetteconf.com/2026/talks/pos

    Check also the schedule for many more PostgreSQL talks!👇 posetteconf.com/2026/

    Thanks @clairegiordano for the support during the recording.🙏

    #PostgreSQL #Python #Django #ORM #GeneratedColumn #GeneratedField #PosetteConf #Postgres #Database #Community #OpenSource

    CC @pycon @django @ubuntu

  8. Just recorded my talk for @posetteconf 2026:
    "PostgreSQL Generated Columns by Example" 🐘

    Tune in on June 17th to watch my talk: 📆
    posetteconf.com/2026/talks/pos

    Check also the schedule for many more PostgreSQL talks!👇 posetteconf.com/2026/

    Thanks @clairegiordano for the support during the recording.🙏

    #PostgreSQL #Python #Django #ORM #GeneratedColumn #GeneratedField #PosetteConf #Postgres #Database #Community #OpenSource

    CC @pycon @django @ubuntu

  9. Just recorded my talk for @posetteconf 2026:
    "PostgreSQL Generated Columns by Example" 🐘

    Tune in on June 17th to watch my talk: 📆
    posetteconf.com/2026/talks/pos

    Check also the schedule for many more PostgreSQL talks!👇 posetteconf.com/2026/

    Thanks @clairegiordano for the support during the recording.🙏

    #PostgreSQL #Python #Django #ORM #GeneratedColumn #GeneratedField #PosetteConf #Postgres #Database #Community #OpenSource

    CC @pycon @django @ubuntu

  10. #JPA is not a silver bullet — but it doesn’t have to be a bottleneck either. Julius Mischok shows when to tune JPA, when to use projections, and when plain SQL is the better choice.

    Read the full piece: javapro.io/2025/12/31/high-spe

    #ORM #Java #Persistence #Hibernate #CleanCode

  11. #JPA is not a silver bullet — but it doesn’t have to be a bottleneck either. Julius Mischok shows when to tune JPA, when to use projections, and when plain SQL is the better choice.

    Read the full piece: javapro.io/2025/12/31/high-spe

    #ORM #Java #Persistence #Hibernate #CleanCode

  12. [Перевод] JPA 4. Переосмысление Hibernate

    Данная статья является переводом анонса Гевина Кингa о релизе первого milestone JPA 4 спецификации и общего вектора развития JPA. Полноценная 4-ая версия JPA спецификации должна выйти чуть-чуть позже в этом году. Тем не менее, то, что сейчас в Milestone это основа, которая, возможно, с небольшими доработками, но уже пойдёт в релиз в этом году. От себя скажу, что данное обновление будет довольно крупное. Я оставил свои комментарии там, где посчитал уместным. P.S: У нас в рамках Spring АйО Академии как раз есть программа посвящённая Hibernate. В ней мы тоже затронем новую версию спецификации, в частности и работу со StatelessSession и EntityAgent на практике. Я думаю, что из всего апдейта, именно стандартизация работы без Persistence Context будет самым важным для прикладных разработчиков. Остальное тоже важно, но не так как работа с EntityAgent . Приятного чтения!

    habr.com/ru/companies/spring_a

    #hibernate #orm #jpa #sql #springdata #java

  13. [Перевод] JPA 4. Переосмысление Hibernate

    Данная статья является переводом анонса Гевина Кингa о релизе первого milestone JPA 4 спецификации и общего вектора развития JPA. Полноценная 4-ая версия JPA спецификации должна выйти чуть-чуть позже в этом году. Тем не менее, то, что сейчас в Milestone это основа, которая, возможно, с небольшими доработками, но уже пойдёт в релиз в этом году. От себя скажу, что данное обновление будет довольно крупное. Я оставил свои комментарии там, где посчитал уместным. P.S: У нас в рамках Spring АйО Академии как раз есть программа посвящённая Hibernate. В ней мы тоже затронем новую версию спецификации, в частности и работу со StatelessSession и EntityAgent на практике. Я думаю, что из всего апдейта, именно стандартизация работы без Persistence Context будет самым важным для прикладных разработчиков. Остальное тоже важно, но не так как работа с EntityAgent . Приятного чтения!

    habr.com/ru/companies/spring_a

    #hibernate #orm #jpa #sql #springdata #java

  14. [Перевод] JPA 4. Переосмысление Hibernate

    Данная статья является переводом анонса Гевина Кингa о релизе первого milestone JPA 4 спецификации и общего вектора развития JPA. Полноценная 4-ая версия JPA спецификации должна выйти чуть-чуть позже в этом году. Тем не менее, то, что сейчас в Milestone это основа, которая, возможно, с небольшими доработками, но уже пойдёт в релиз в этом году. От себя скажу, что данное обновление будет довольно крупное. Я оставил свои комментарии там, где посчитал уместным. P.S: У нас в рамках Spring АйО Академии как раз есть программа посвящённая Hibernate. В ней мы тоже затронем новую версию спецификации, в частности и работу со StatelessSession и EntityAgent на практике. Я думаю, что из всего апдейта, именно стандартизация работы без Persistence Context будет самым важным для прикладных разработчиков. Остальное тоже важно, но не так как работа с EntityAgent . Приятного чтения!

    habr.com/ru/companies/spring_a

    #hibernate #orm #jpa #sql #springdata #java

  15. [Перевод] JPA 4. Переосмысление Hibernate

    Данная статья является переводом анонса Гевина Кингa о релизе первого milestone JPA 4 спецификации и общего вектора развития JPA. Полноценная 4-ая версия JPA спецификации должна выйти чуть-чуть позже в этом году. Тем не менее, то, что сейчас в Milestone это основа, которая, возможно, с небольшими доработками, но уже пойдёт в релиз в этом году. От себя скажу, что данное обновление будет довольно крупное. Я оставил свои комментарии там, где посчитал уместным. P.S: У нас в рамках Spring АйО Академии как раз есть программа посвящённая Hibernate. В ней мы тоже затронем новую версию спецификации, в частности и работу со StatelessSession и EntityAgent на практике. Я думаю, что из всего апдейта, именно стандартизация работы без Persistence Context будет самым важным для прикладных разработчиков. Остальное тоже важно, но не так как работа с EntityAgent . Приятного чтения!

    habr.com/ru/companies/spring_a

    #hibernate #orm #jpa #sql #springdata #java

  16. Room или SQLite? Как не писать SQL запросы вручную на Android

    Каждое Android-приложение, которое хранит данные на устройстве, рано или поздно сталкивается с базой данных. Встроенная SQLite — надёжное решение, но работа с ней через SQLiteOpenHelper требует написания SQL-запросов вручную, преобразования курсоров в объекты и постоянного контроля за закрытием соединений. Это отнимает время и довольно часто вызывает ошибки. Google предложил библиотеку Room, которая является оберткой над SQLite и реализует паттерн ORM (Object-Relational Mapping). В этой статье мы на конкретном примере сравним, как выглядят операции добавления и чтения данных на чистом SQLite и на Room. Вы увидите, почему Room избавляет от «шаблонного кода» и делает работу с БД простой и безопасной.

    habr.com/ru/articles/1021890/

    #Room #SQLite #Android #базы_данных #ORM #Kotlin #мобильная_разработка

  17. Room или SQLite? Как не писать SQL запросы вручную на Android

    Каждое Android-приложение, которое хранит данные на устройстве, рано или поздно сталкивается с базой данных. Встроенная SQLite — надёжное решение, но работа с ней через SQLiteOpenHelper требует написания SQL-запросов вручную, преобразования курсоров в объекты и постоянного контроля за закрытием соединений. Это отнимает время и довольно часто вызывает ошибки. Google предложил библиотеку Room, которая является оберткой над SQLite и реализует паттерн ORM (Object-Relational Mapping). В этой статье мы на конкретном примере сравним, как выглядят операции добавления и чтения данных на чистом SQLite и на Room. Вы увидите, почему Room избавляет от «шаблонного кода» и делает работу с БД простой и безопасной.

    habr.com/ru/articles/1021890/

    #Room #SQLite #Android #базы_данных #ORM #Kotlin #мобильная_разработка

  18. Room или SQLite? Как не писать SQL запросы вручную на Android

    Каждое Android-приложение, которое хранит данные на устройстве, рано или поздно сталкивается с базой данных. Встроенная SQLite — надёжное решение, но работа с ней через SQLiteOpenHelper требует написания SQL-запросов вручную, преобразования курсоров в объекты и постоянного контроля за закрытием соединений. Это отнимает время и довольно часто вызывает ошибки. Google предложил библиотеку Room, которая является оберткой над SQLite и реализует паттерн ORM (Object-Relational Mapping). В этой статье мы на конкретном примере сравним, как выглядят операции добавления и чтения данных на чистом SQLite и на Room. Вы увидите, почему Room избавляет от «шаблонного кода» и делает работу с БД простой и безопасной.

    habr.com/ru/articles/1021890/

    #Room #SQLite #Android #базы_данных #ORM #Kotlin #мобильная_разработка

  19. Room или SQLite? Как не писать SQL запросы вручную на Android

    Каждое Android-приложение, которое хранит данные на устройстве, рано или поздно сталкивается с базой данных. Встроенная SQLite — надёжное решение, но работа с ней через SQLiteOpenHelper требует написания SQL-запросов вручную, преобразования курсоров в объекты и постоянного контроля за закрытием соединений. Это отнимает время и довольно часто вызывает ошибки. Google предложил библиотеку Room, которая является оберткой над SQLite и реализует паттерн ORM (Object-Relational Mapping). В этой статье мы на конкретном примере сравним, как выглядят операции добавления и чтения данных на чистом SQLite и на Room. Вы увидите, почему Room избавляет от «шаблонного кода» и делает работу с БД простой и безопасной.

    habr.com/ru/articles/1021890/

    #Room #SQLite #Android #базы_данных #ORM #Kotlin #мобильная_разработка

  20. Hibernate merge: начали за здравие, закончили за упокой

    Я уже давно хотел на этот счет написать статью. Она короткая,но имхо она нужна. Давайте с места в карьер: merge в Hibernate это не универсальный save , и чаще всего он Вам не нужен . На самом деле, если абстрагироваться, то это специализированная операция для случая, когда у вас есть detached-сущность , и вы хотите перенести ее состояние в текущий Persistence Context. Проблема в том, что на практике merge очень часто используют для апдейта любой сущности ( Spring Data JPA иногда так делает ) и как следствие получают лишние SQL-запросы. Ниже разберем на мой взгляд главное - почему именно так происходит , где merge действительно нужен, а где он превращается в антипаттерн (P.S да почти везде).

    habr.com/ru/companies/spring_a

    #java #hibernate #springdata #spring #orm #sql #jpa

  21. Hibernate merge: начали за здравие, закончили за упокой

    Я уже давно хотел на этот счет написать статью. Она короткая,но имхо она нужна. Давайте с места в карьер: merge в Hibernate это не универсальный save , и чаще всего он Вам не нужен . На самом деле, если абстрагироваться, то это специализированная операция для случая, когда у вас есть detached-сущность , и вы хотите перенести ее состояние в текущий Persistence Context. Проблема в том, что на практике merge очень часто используют для апдейта любой сущности ( Spring Data JPA иногда так делает ) и как следствие получают лишние SQL-запросы. Ниже разберем на мой взгляд главное - почему именно так происходит , где merge действительно нужен, а где он превращается в антипаттерн (P.S да почти везде).

    habr.com/ru/companies/spring_a

    #java #hibernate #springdata #spring #orm #sql #jpa

  22. Hibernate merge: начали за здравие, закончили за упокой

    Я уже давно хотел на этот счет написать статью. Она короткая,но имхо она нужна. Давайте с места в карьер: merge в Hibernate это не универсальный save , и чаще всего он Вам не нужен . На самом деле, если абстрагироваться, то это специализированная операция для случая, когда у вас есть detached-сущность , и вы хотите перенести ее состояние в текущий Persistence Context. Проблема в том, что на практике merge очень часто используют для апдейта любой сущности ( Spring Data JPA иногда так делает ) и как следствие получают лишние SQL-запросы. Ниже разберем на мой взгляд главное - почему именно так происходит , где merge действительно нужен, а где он превращается в антипаттерн (P.S да почти везде).

    habr.com/ru/companies/spring_a

    #java #hibernate #springdata #spring #orm #sql #jpa

  23. Hibernate merge: начали за здравие, закончили за упокой

    Я уже давно хотел на этот счет написать статью. Она короткая,но имхо она нужна. Давайте с места в карьер: merge в Hibernate это не универсальный save , и чаще всего он Вам не нужен . На самом деле, если абстрагироваться, то это специализированная операция для случая, когда у вас есть detached-сущность , и вы хотите перенести ее состояние в текущий Persistence Context. Проблема в том, что на практике merge очень часто используют для апдейта любой сущности ( Spring Data JPA иногда так делает ) и как следствие получают лишние SQL-запросы. Ниже разберем на мой взгляд главное - почему именно так происходит , где merge действительно нужен, а где он превращается в антипаттерн (P.S да почти везде).

    habr.com/ru/companies/spring_a

    #java #hibernate #springdata #spring #orm #sql #jpa

  24. Оптимизация запросов в Spring Data JDBC

    Я думаю многие согласятся, что Spring Data JDBC — это ORM, который занимает конкретную нишу: он предоставляет более легковесный репозиторный слой доступа к данным поверх реляционной БД без persistence context, без lazy loading, без dirty checking и т.д. Иными словами, Spring Data JDBC реализует принцип "what you see is what you get" — каждое обращение к репозиторию означает конкретный SQL-запрос в БД, который просто достаёт дерево Aggregate. Это и преимущество, и, тем не менее, иногда это источник потенциальных проблем с производительностью. В этой статье я разберу ключевые подходы к оптимизации запросов в Spring Data JDBC: от дизайна агрегатов и Single Query Loading, до Stream в качестве возвращаемого значения и @Modifying запросов. Разберём всё с кодом и на примерах. Только один момент - в этой статье я не затрагиваю Spring Data открытые/закрытые Projection-ы и т.п, так как я предполагаю, что пользователи Spring Data знают, что это и в каких ситуациях их стоит использовать. Эти вещи не специфичны для Spring Data JDBC, я же буду говорить про вещи более специфичные для Spring Data JDBC .

    habr.com/ru/companies/spring_a

    #java #spring #spring_data #spring_data_jdbc #orm #sql #performance

  25. Оптимизация запросов в Spring Data JDBC

    Я думаю многие согласятся, что Spring Data JDBC — это ORM, который занимает конкретную нишу: он предоставляет более легковесный репозиторный слой доступа к данным поверх реляционной БД без persistence context, без lazy loading, без dirty checking и т.д. Иными словами, Spring Data JDBC реализует принцип "what you see is what you get" — каждое обращение к репозиторию означает конкретный SQL-запрос в БД, который просто достаёт дерево Aggregate. Это и преимущество, и, тем не менее, иногда это источник потенциальных проблем с производительностью. В этой статье я разберу ключевые подходы к оптимизации запросов в Spring Data JDBC: от дизайна агрегатов и Single Query Loading, до Stream в качестве возвращаемого значения и @Modifying запросов. Разберём всё с кодом и на примерах. Только один момент - в этой статье я не затрагиваю Spring Data открытые/закрытые Projection-ы и т.п, так как я предполагаю, что пользователи Spring Data знают, что это и в каких ситуациях их стоит использовать. Эти вещи не специфичны для Spring Data JDBC, я же буду говорить про вещи более специфичные для Spring Data JDBC .

    habr.com/ru/companies/spring_a

    #java #spring #spring_data #spring_data_jdbc #orm #sql #performance

  26. Оптимизация запросов в Spring Data JDBC

    Я думаю многие согласятся, что Spring Data JDBC — это ORM, который занимает конкретную нишу: он предоставляет более легковесный репозиторный слой доступа к данным поверх реляционной БД без persistence context, без lazy loading, без dirty checking и т.д. Иными словами, Spring Data JDBC реализует принцип "what you see is what you get" — каждое обращение к репозиторию означает конкретный SQL-запрос в БД, который просто достаёт дерево Aggregate. Это и преимущество, и, тем не менее, иногда это источник потенциальных проблем с производительностью. В этой статье я разберу ключевые подходы к оптимизации запросов в Spring Data JDBC: от дизайна агрегатов и Single Query Loading, до Stream в качестве возвращаемого значения и @Modifying запросов. Разберём всё с кодом и на примерах. Только один момент - в этой статье я не затрагиваю Spring Data открытые/закрытые Projection-ы и т.п, так как я предполагаю, что пользователи Spring Data знают, что это и в каких ситуациях их стоит использовать. Эти вещи не специфичны для Spring Data JDBC, я же буду говорить про вещи более специфичные для Spring Data JDBC .

    habr.com/ru/companies/spring_a

    #java #spring #spring_data #spring_data_jdbc #orm #sql #performance

  27. Оптимизация запросов в Spring Data JDBC

    Я думаю многие согласятся, что Spring Data JDBC — это ORM, который занимает конкретную нишу: он предоставляет более легковесный репозиторный слой доступа к данным поверх реляционной БД без persistence context, без lazy loading, без dirty checking и т.д. Иными словами, Spring Data JDBC реализует принцип "what you see is what you get" — каждое обращение к репозиторию означает конкретный SQL-запрос в БД, который просто достаёт дерево Aggregate. Это и преимущество, и, тем не менее, иногда это источник потенциальных проблем с производительностью. В этой статье я разберу ключевые подходы к оптимизации запросов в Spring Data JDBC: от дизайна агрегатов и Single Query Loading, до Stream в качестве возвращаемого значения и @Modifying запросов. Разберём всё с кодом и на примерах. Только один момент - в этой статье я не затрагиваю Spring Data открытые/закрытые Projection-ы и т.п, так как я предполагаю, что пользователи Spring Data знают, что это и в каких ситуациях их стоит использовать. Эти вещи не специфичны для Spring Data JDBC, я же буду говорить про вещи более специфичные для Spring Data JDBC .

    habr.com/ru/companies/spring_a

    #java #spring #spring_data #spring_data_jdbc #orm #sql #performance