segunda-feira, 30 de janeiro de 2017

Primefaces DataTable auto/dynamic height example

Defina os valores height: calc(100vh - 270px) de acordo com seu layout.

<p:dataTable scrollable="true"
 crollHeight="display: flex;overflow: auto;height: calc(100vh - 270px);position: relative;">

Ou

.divDataTablePrincipal {
    display: flex!important;
    overflow: auto!important;
    height: calc(100vh - 240px)!important;
    position: relative!important;
}

<div class="divDataTablePrincipal">
  <p:dataTable>

  </p:dataTable>
</div>

quarta-feira, 18 de janeiro de 2017

JPA ResultTransformer

Alternativa ao ResultTransformer do Hibernate no JPA.


public class AgendaView implements Serializable {

    private String agendaNome;
    private String contatoNome;

    public AgendaView(String agendaNome,String contatoNome) {
        this.agendaNome = agendaNome;
        this.contatoNome = contatoNome;
    }

    public String getAgendaNome() {
        return agendaNome;
    }

    public String getContatoNome() {
        return contatoNome;
    }

}

    public List<AgendaView> buscarAgenda(String nome){
        if(nome != null && !nome.isEmpty()){
            String query = "select"
                    + " new com.AgendaView(a.nome,c.nome) from " + Agenda.class.getName() +" a"
                        + " left join a.contatos c "
                        + " where "
                        + " lower(a.nome) like '" + nome.toLowerCase() + "%' or"
                        + " lower(c.nome) like '" + nome.toLowerCase() + "%'"
                        + " order by a.nome, c.nome";
            
            TypedQuery<AgendaView> q = em.createQuery(query, AgendaView.class);
            
            
            return (List<AgendaView>) q.getResultList();
        }else {
            return null;
        }            
    }

quarta-feira, 11 de janeiro de 2017

Diferenças entre Truncate table, Drop table ou Delete from

Fonte: http://www.oraclehome.com.br/2013/08/14/diferencas-entre-truncate-table-drop-table-ou-delete-from/

Diferenças entre Truncate table, Drop table ou Delete from

Muitas vezes nos deparamos com a situação de limpar os registros em alguma determinada tabela.
Porem, qual comando usar? Qual comando é mais rápido para o Banco de dados? Ou qual comando atenderá a sua necessidade?
Veremos a seguir qual é o melhor caminho para a sua necessidade.
Truncate table: É um DDL, serve para remover todas as linhas de uma tabela. Com o comando truncate você não tem a opção de escolher quais dados remover e não há retorno dos mesmos caso necessite, Este comando remove a marca d’agua da tabela limpando a mesma para uma próxima utilização.
Sintaxe:
Truncate table <table_name>;
exemplo:
1
2
3
4
5
SQL> truncate table trunc_table;
 
Table truncated.
 
SQL>
Drop table: Também é um comando DDL, serve para remover toda a tabela (estrutura, indices, contraints, etc…), não há retorno dos dados caso seja necessário, a menos que a recyclebin do oracle esteja habilitada, veja mais sobre este assunto neste post.
Sintaxe:
Drop table <table_name>;
exemplo:
1
2
3
4
5
SQL> drop table trunc_table;
 
Table dropped.
 
SQL>
Delete from: É um comando DML e serve para remover registros da tabela, semelhante ao truncate, com mais opções, com ele é permitido você deletar apenas alguns registros da tabela alvo. Porem este comando não remove a marca d’agua da tabela mantendo a mesma do mesmo tamanho caso seja um delete full.
Sintaxe:
delete from <table_name> [where coluna=valor];
exemplo:
Para o exemplo foi criado uma tabela com os dados da visão v$tablespace;
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
SQL> create table trunc_table as select * from v$tablespace;
 
Table created.
 
SQL> select * from trunc_table;
 
       TS# NAME                           INC BIG FLA ENC
---------- ------------------------------ --- --- --- ---
         0 SYSTEM                         YES NO  YES
         1 SYSAUX                         YES NO  YES
         2 UNDOTBS1                       YES NO  YES
         4 USERS                          YES NO  YES
         3 TEMP                           NO  NO  YES
 
SQL> delete from trunc_table where NAME='SYSTEM';
 
1 row deleted.
 
SQL> select * from trunc_table;
 
       TS# NAME                           INC BIG FLA ENC
---------- ------------------------------ --- --- --- ---
         1 SYSAUX                         YES NO  YES
         2 UNDOTBS1                       YES NO  YES
         4 USERS                          YES NO  YES
         3 TEMP                           NO  NO  YES
 
SQL> delete from trunc_table;
 
4 rows deleted.
 
SQL> select * from trunc_table;
 
no rows selected
 
SQL>
Observe que criei a tabela com os dados da visão v$tablespace, após o mesmo deletei apenas um registro com o campo “where NAME=’SYSTEM'” e após conferir, deletei os outros registros.
Resumindo.
Caso queira deletar todos os registros de uma tabela, por ser mais rápido e por já limpar a marca d’agua da tabela é aconselhável utilizar o truncate, Caso seja necessário deletar apenas alguns registros da tabela sugiro utilizar o delete, e caso você deseja eliminar a tabela de seu Banco de dados Oracle juntamente com os objetos referentes a esta tabela o “drop table”, é a solução.