1 JPQL
1.1 O que é JPQL
JPQL: jpa é uma linguagem de consulta desde que, semelhante ao sql.
1,2 JPQL e diferenciado SQL
(1) no interior do alvo JPQL operação e o objeto atributos tabelas SQL operacionais e as colunas da tabela no interior da caixa-sensível
(2) não pode aparecer no interior JPQL *, nome da tabela não pode aparecer
(3) JPQL sql e eles são as mesmas palavras-chave, palavras-chave são maiúsculas e minúsculas
1.3 sintaxe JPQL
sintaxe SQL:
select *
da tabela
onde as condições do filtro
grupo por condição agrupamento
méd depois de ter pacote filtrada (pontuação)> 98
ordem por encomenda
JPQL semelhante
seleccionar o.name, o (atributo do objecto)
a partir da classe S o Junte O. dentro classe nome de atributo p
onde o. nome do atributo
GROUP BY o. nome do atributo
ordenar por
...
1,4 JPQL que se juntam
sql: link de consulta
Conexão externa: a conexão é dividida em externa esquerda (tabela à esquerda ea intersecção de todos os dados deve conter a parte direita da tabela.) e uma conexão externa direita (e vice-versa) LEFT JOIN direita juntam-se
En: dados sobre a parte interseção junte
JPQL:
selecionar o de Employee o juntar d o.department
1,5 - funções de agregação e a mesma SQL
sql: encontrar os seguintes valores para um conjunto de dados
contar o número de registos que procuram buscando máxima soma soma max min média média para o mínimo
1 5 6 8 2 -> 5 contagem máxima de 8 min 1 soma 22 AVG 22/5
Com o uso de grupo a grupo
1,6 sub-consultas - e como SQL
subquery:
Como o resultado de uma consulta ou uma tabela de consulta condição adicional utilizada
Subquery: uma consulta aninhada
select p from Employee p where p.salary > (select avg(o.salary) from Employee o)
1,7 recolha uso JPQL
Pode ser usado um valor determinado tamanho
select o from Project o where o.employees.size = 0
1.8 paginação
sintaxe SQL:
SELECT * FROM tabela onde limite de beginIndex, pageSize
currentPage: Página Atual
pageSize: o número de página
beginIndex: posição inicial beginIndex = (currentPage-1) * pageSize
pageSize: o número de página
SELECT * FROM tabela onde limite de 0,5
seleccionar * da tabela onde limite de 5,5
2 de suporte SQL
para sql
Usando este método
createNativeQuery
3 simultaneidade transação
3.1 O que é uma transação
transação
Serviços: um conjunto de operações lógicas ou todos sucesso ou fracasso (com a morte total)
3.2 Quais são as características da operação (ACID)
Atomicidade: A
Esta operação é uma transação que tem uma unidade mínima, não pode ser dividida novamente
Consistência: C
A mesma quantidade de consistência de dados, antes da operação, a quantidade total de 10.000, e após a conclusão da operação, a quantidade total de 10 000
Isolamento hoje :() I
Refletir mais de duas operações de assuntos, deve ter isolamento entre as transações, a transação não pode operar o meu negócio, se você operar minhas transações comerciais ocorrem, ele vai trazer a questão de transações simultâneas
Persistência: D
Quando confirmar uma transação apresentou dados sobre o baixo presença permanente
3,3 Transação simultaneidade
simultaneidade transação:
Uma pluralidade de transacção (ou dois ou mais da transacção),Ao mesmo tempoem operaçãoOs mesmos dadosTempo, este fenômeno é chamado de transações simultâneas
simultaneidade transação vai trazer alguns problemas: - resolvido através do mecanismo de isolamento de banco de dados
Os primeiros aparece atualização perdida - Cabos
A segunda categoria está faltando Update - alças
leitura suja - mecanismo de isolamento de banco de dados
Resíduos (graus mágica) - mecanismo de isolamento de banco de dados
mecanismo de isolamento de banco de dados - leitura não repetível
mecanismo de isolamento 3.4 banco de dados
quatro tipos
LEIA UNCOMMITTED (leitura não consolidada) Leia Fantasy (Leia simulado), não repetir a leitura e permitir leituras sujas.
READ COMMITTED permitir fantasia de ler, leitura não repetível, não permitem leitura suja
REPEATABLE READ permissão para ler fantasia, não permitem leituras sujas e leitura não repetível
fantasia SERIALIZABLE lê, não repetíveis e sujo lê não são permitidos - desempenho certamente tornar-se baixa
3.5 As primeira e segunda categorias atualizações perdidas
mecanismo de bloqueio
bloqueio pessimista: fechaduras muito pessimista preciso esperar por uma libertação do encaixe, de forma a manipular dados, o desempenho não é alta
bloqueio otimista: não há necessidade de esperar, após o número da versão da necessidade subjacente para controlar a primeira modificação, a mudança número da versão, a segunda pessoa não pode operar sobre este produto
regras de utilização 4JPA ou experiência
. \ 1 bidirecional muitos associação, não é um one-way para muitos - um pouco alta eficiência
. \ Associação um 2 one-way flexível - partes de chaves estrangeiras para manter a alta ponto de eficiência
\ 3. Nem um a um, com muitos para substituir (não use um compartilhada uma chave primária, chave estrangeira com um exclusivo a um)
\ 4. O objeto de configuração de cache secundário (configuração Cacheable), cache de consultas (JPQL query),
Sem consulta só usar o cache de consultas (um sucesso se as condições são muito baixos)
cache de consultas:
EntityManagerFactory entityManager diferente mesma mesmo mesma transmissão dos valores da condição JPQL
\ 5 relacionamento combinando definir a lista (sequência de repetição) - A segunda módulos documento do projeto, muitos-para-uso conjunto de coleta
\ 6. design da tabela, o campo da tabela menos, não ser mesa medo associado com o apoio de cache secundário, tabela de projeto, tanto quanto possível para alcançar o terceiro paradigma (chave estrangeira)
paradigma Base de dados: regras de banco de dados
1NF: tempo de design, que tentam garantir que a tabela não pode armazenar uma pluralidade de valores de coluna, uma coluna de unidade mínima, não pode ser dividido - Série atômica corpo
2NF: dentro de cada linha da tabela de dados deve ter um valor único podem ser distinguidos, é recomendável que você crie uma chave primária
3NF: Tabela não devem ser armazenados dentro de outra informação importante não-primária em uma tabela - Sugiro que uma chave estrangeira