Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как...

10
QueryDsl работа с динамическими Entity

Transcript of Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как...

Page 1: Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как альтернатива Hibernate. Работа с динамическими entity

QueryDslработа с динамическими Entity

Page 2: Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как альтернатива Hibernate. Работа с динамическими entity

QueryDsl

BaseModel(RelationBasePath)

querydsl SQLПрямой построитель

запросов

querydsl-jpaпостроитель

на основе Entity(Hibernate)

querydsl-luceneпостроитель

дляApache Lucene

….

Метаданные POJO Модель Поля для поиска

Модули:

Представления:

Page 3: Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как альтернатива Hibernate. Работа с динамическими entity

Пример Модели Запроса:

SQLTemplates dialect = new OracleTemplates(); Query query = new SQLQuery(connection, dialect);List<String> names = query.from(QUser.user).where(QUser.user.id.eq(1000)).list(QUser.user.name);

select "USER".NAME from "USER" "USER" where "USER".ID = 1000

Page 4: Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как альтернатива Hibernate. Работа с динамическими entity

Динамическая Структура

Базовая Структура

Application

Динамическа Структура?

Базовая Таблица

IDTABLE NAME

COLUMN 1...

Динамическая Таблица

IDTABLE NAME

COLUMN NAMECOLUMN TYPESTRING VALUE

….

Базовое Решение

Page 5: Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как альтернатива Hibernate. Работа с динамическими entity

Альтернативное Решение

Базовая Таблица

IDTABLE NAME

COLUMN 1...

TABLE 1

IDCOLUMN T1COLUMN T2

….

TABLE N

IDCOLUMN TN1COLUMN TN2

….

….

TABLE 4

IDCOLUMN T1COLUMN T2

….

Page 6: Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как альтернатива Hibernate. Работа с динамическими entity

Динамическая и Базовая Модель QueryDsl

IDMAP<STRING,COLUMN>

Динамическая Model

IDCOLUMN 1

Базовая Model

COLUMN 2….

Модели Отображающие данные:

IDCOLUMN 1

Базовая Model

COLUMN 2….

IDMAP<STRING,OBJECT>

Динамическая Model

Page 7: Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как альтернатива Hibernate. Работа с динамическими entity

CRUD и Select

QueryDsl Model Модель с данными

MAPPER

MAP<COLUMN,VALUE>

QueryDSL

Database

Page 8: Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как альтернатива Hibernate. Работа с динамическими entity

Кеширование:

Модель с данными

ID....

Транзакционный cache

База Данных

Cache

Commit

MAP<ID_TYPE,MODEL>

DeleteInsert selectById

Update

evict

evict

put

putget

get

evict

Page 9: Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как альтернатива Hibernate. Работа с динамическими entity

Кеширование По Полям:

USERNAME

ID 1

T1

2

T1

3

T3

Cache

1 Model 1(1,T1)

2 Model 2(2,T1)

3 Model 3(3,T3)

NAME,T1 1,2

NAME,T3 3

Insert

USERNAME

ID 2

T3

Cache

1 Model 1(1,T1)

3 Model 3(3,T3)

update

select T3

Cache

1 Model 1(1,T1)

3 Model 3(3,T3)

NAME,T3 2,3

2,3

Page 10: Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как альтернатива Hibernate. Работа с динамическими entity

Конец

https://github.com/vzakharchenko