Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как...
-
Upload
provectus -
Category
Technology
-
view
73 -
download
2
Transcript of Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как...
QueryDslработа с динамическими Entity
QueryDsl
BaseModel(RelationBasePath)
querydsl SQLПрямой построитель
запросов
querydsl-jpaпостроитель
на основе Entity(Hibernate)
querydsl-luceneпостроитель
дляApache Lucene
….
Метаданные POJO Модель Поля для поиска
Модули:
Представления:
Пример Модели Запроса:
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
Динамическая Структура
Базовая Структура
Application
Динамическа Структура?
Базовая Таблица
IDTABLE NAME
COLUMN 1...
Динамическая Таблица
IDTABLE NAME
COLUMN NAMECOLUMN TYPESTRING VALUE
….
Базовое Решение
Альтернативное Решение
Базовая Таблица
IDTABLE NAME
COLUMN 1...
TABLE 1
IDCOLUMN T1COLUMN T2
….
TABLE N
IDCOLUMN TN1COLUMN TN2
….
….
TABLE 4
IDCOLUMN T1COLUMN T2
….
Динамическая и Базовая Модель QueryDsl
IDMAP<STRING,COLUMN>
Динамическая Model
IDCOLUMN 1
Базовая Model
COLUMN 2….
Модели Отображающие данные:
IDCOLUMN 1
Базовая Model
COLUMN 2….
IDMAP<STRING,OBJECT>
Динамическая Model
CRUD и Select
QueryDsl Model Модель с данными
MAPPER
MAP<COLUMN,VALUE>
QueryDSL
Database
Кеширование:
Модель с данными
ID....
Транзакционный cache
База Данных
Cache
Commit
MAP<ID_TYPE,MODEL>
DeleteInsert selectById
Update
evict
evict
put
putget
get
evict
Кеширование По Полям:
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
Конец
https://github.com/vzakharchenko