domingo, 16 de maio de 2021

Hibernate - Tratanto Herança



Tabela por Hierarquia

TABELA POR HIERARQUIA

    create table cliente (
       id integer not null auto_increment,
        cpf varchar(255),
        nome VARCHAR(100) not null,
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table curso (
       id integer not null auto_increment,
        area varchar(255),
        codigo varchar(255),
        nome varchar(255),
        numSemestres integer,
        regime varchar(255),
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table disciplina (
       id integer not null auto_increment,
        codigo varchar(255),
        nome varchar(255),
        curso_id integer,
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table documento_identificacao (
       id integer not null auto_increment,
        nome varchar(255),
        valor varchar(255),
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table empresa (
       id integer not null auto_increment,
        email varchar(255),
        nomeContato varchar(255),
        telefone varchar(255),
        nome varchar(255),
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table funcionario (
       DTYPE varchar(31) not null,
        id integer not null auto_increment,
        fim datetime(6),
        inicio datetime(6),
        nome varchar(255),
        periodoEmMeses integer,
        valorHora float,
        bonus float,
        salarioMensal float,
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    alter table aluno 
       add constraint FK9ma9koxhhv7lhowufvteqirp1 
       foreign key (documento_id) 
       references documento_identificacao (id)
Hibernate: 
    
    alter table disciplina 
       add constraint FKkhdiw1swjoa2ml3md0mt8g4sf 
       foreign key (curso_id) 
       references curso (id)
mai 16, 2021 8:36:46 AM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Hibernate: 
    /* insert br.newtonpaiva.poo.u5.ex6.heranca.tabelaporhierarquia.Funcionario
        */ insert 
        into
            funcionario
            (fim, inicio, nome, DTYPE) 
        values
            (?, ?, ?, 'Funcionario')
--- Salvo: (CREATE)
Funcionario [id=1, nome=José Pereira, inicio=2019-05-16T08:36:46.321353, fim=null]
---

Hibernate: 
    /* insert br.newtonpaiva.poo.u5.ex6.heranca.tabelaporhierarquia.ContratoClt
        */ insert 
        into
            funcionario
            (fim, inicio, nome, bonus, salarioMensal, DTYPE) 
        values
            (?, ?, ?, ?, ?, 'empregadoclt')
--- Salvo: (CREATE)
ContratoClt [salarioMensal=4000.0, bonus=200.0, toString()=Funcionario [id=2, nome=Maria Silva, inicio=2020-05-16T08:36:46.362783, fim=null]]
---

Hibernate: 
    /* insert br.newtonpaiva.poo.u5.ex6.heranca.tabelaporhierarquia.ContratoPj
        */ insert 
        into
            funcionario
            (fim, inicio, nome, periodoEmMeses, valorHora, DTYPE) 
        values
            (?, ?, ?, ?, ?, 'empregadopj')
--- Salvo: (CREATE)
ContratoPj [valorHora=100.0, periodoEmMeses=26, toString()=Funcionario [id=3, nome=João Lima, inicio=2018-05-16T08:36:46.375511, fim=2021-05-16T08:36:46.375537]]
---

mai 16, 2021 8:36:46 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PoolState stop
INFO: HHH10001008: Cleaning up connection pool [jdbc:mysql://localhost:43306/banco?useTimezone=true&serverTimezone=UTC]


mysql> desc funcionario;
+----------------+--------------+------+-----+---------+----------------+
| Field          | Type         | Null | Key | Default | Extra          |
+----------------+--------------+------+-----+---------+----------------+
| DTYPE          | varchar(31)  | NO   |     | NULL    |                |
| id             | int(11)      | NO   | PRI | NULL    | auto_increment |
| fim            | datetime(6)  | YES  |     | NULL    |                |
| inicio         | datetime(6)  | YES  |     | NULL    |                |
| nome           | varchar(255) | YES  |     | NULL    |                |
| periodoEmMeses | int(11)      | YES  |     | NULL    |                |
| valorHora      | float        | YES  |     | NULL    |                |
| bonus          | float        | YES  |     | NULL    |                |
| salarioMensal  | float        | YES  |     | NULL    |                |
+----------------+--------------+------+-----+---------+----------------+
9 rows in set (0.00 sec)

mysql> select * from funcionario;
+--------------+----+----------------------------+----------------------------+---------------+----------------+-----------+-------+---------------+
| DTYPE        | id | fim                        | inicio                     | nome          | periodoEmMeses | valorHora | bonus | salarioMensal |
+--------------+----+----------------------------+----------------------------+---------------+----------------+-----------+-------+---------------+
| Funcionario  |  1 | NULL                       | 2019-05-16 11:36:46.321353 | José Pereira  |           NULL |      NULL |  NULL |          NULL |
| empregadoclt |  2 | NULL                       | 2020-05-16 11:36:46.362783 | Maria Silva   |           NULL |      NULL |   200 |          4000 |
| empregadopj  |  3 | 2021-05-16 11:36:46.375537 | 2018-05-16 11:36:46.375511 | João Lima     |             26 |       100 |  NULL |          NULL |
+--------------+----+----------------------------+----------------------------+---------------+----------------+-----------+-------+---------------+
3 rows in set (0.00 sec)

Tabela por Classe Concreta

TABELA POR CLASSE CONCRETA

mysql> desc funcionario;
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| id     | int(11)      | NO   | PRI | NULL    |       |
| fim    | datetime(6)  | YES  |     | NULL    |       |
| inicio | datetime(6)  | YES  |     | NULL    |       |
| nome   | varchar(255) | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> select * from funcionario;
+----+------+----------------------------+---------------+
| id | fim  | inicio                     | nome          |
+----+------+----------------------------+---------------+
|  1 | NULL | 2019-05-16 11:25:57.925744 | José Pereira  |
+----+------+----------------------------+---------------+
1 row in set (0.00 sec)

mysql> desc contrato_clt;
+---------------+--------------+------+-----+---------+-------+
| Field         | Type         | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| id            | int(11)      | NO   | PRI | NULL    |       |
| fim           | datetime(6)  | YES  |     | NULL    |       |
| inicio        | datetime(6)  | YES  |     | NULL    |       |
| nome          | varchar(255) | YES  |     | NULL    |       |
| bonus         | float        | YES  |     | NULL    |       |
| salarioMensal | float        | YES  |     | NULL    |       |
+---------------+--------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

mysql> select * from contrato_clt;
+----+------+----------------------------+-------------+-------+---------------+
| id | fim  | inicio                     | nome        | bonus | salarioMensal |
+----+------+----------------------------+-------------+-------+---------------+
|  2 | NULL | 2020-05-16 11:25:58.014144 | Maria Silva |   200 |          4000 |
+----+------+----------------------------+-------------+-------+---------------+
1 row in set (0.00 sec)

mysql> desc contrato_pj;
+----------------+--------------+------+-----+---------+-------+
| Field          | Type         | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| id             | int(11)      | NO   | PRI | NULL    |       |
| fim            | datetime(6)  | YES  |     | NULL    |       |
| inicio         | datetime(6)  | YES  |     | NULL    |       |
| nome           | varchar(255) | YES  |     | NULL    |       |
| periodoEmMeses | int(11)      | YES  |     | NULL    |       |
| valorHora      | float        | YES  |     | NULL    |       |
+----------------+--------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

mysql> select * from contrato_pj;
+----+----------------------------+----------------------------+------------+----------------+-----------+
| id | fim                        | inicio                     | nome       | periodoEmMeses | valorHora |
+----+----------------------------+----------------------------+------------+----------------+-----------+
|  3 | 2021-05-16 11:25:58.027603 | 2018-05-16 11:25:58.027583 | João Lima  |             26 |       100 |
+----+----------------------------+----------------------------+------------+----------------+-----------+
1 row in set (0.00 sec)

mai 16, 2021 8:25:55 AM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation
INFO: HHH000204: Processing PersistenceUnitInfo [name: BancoPU1]
mai 16, 2021 8:25:55 AM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.4.2.Final}
mai 16, 2021 8:25:55 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
mai 16, 2021 8:25:55 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
mai 16, 2021 8:25:55 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [com.mysql.cj.jdbc.Driver] at URL [jdbc:mysql://localhost:43306/banco?useTimezone=true&serverTimezone=UTC]
mai 16, 2021 8:25:55 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {password=****, user=root}
mai 16, 2021 8:25:55 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
mai 16, 2021 8:25:55 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
mai 16, 2021 8:25:56 AM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect
mai 16, 2021 8:25:56 AM org.hibernate.cfg.AnnotationBinder bindClass
WARN: HHH000499: Using @AttributeOverride or @AttributeOverrides in conjunction with entity inheritance is not supported: br.newtonpaiva.poo.u5.ex6.heranca.tabelaporhierarquia.ContratoPj. The overriding definitions are ignored.
mai 16, 2021 8:25:56 AM org.hibernate.cfg.AnnotationBinder bindClass
WARN: HHH000499: Using @AttributeOverride or @AttributeOverrides in conjunction with entity inheritance is not supported: br.newtonpaiva.poo.u5.ex6.heranca.tabelaporhierarquia.ContratoClt. The overriding definitions are ignored.
mai 16, 2021 8:25:56 AM org.hibernate.id.enhanced.TableGenerator determineDefaultSegmentValue
INFO: HHH000398: Explicit segment value for id generator [hibernate_sequences.sequence_name] suggested; using default [default]
Hibernate: 
    
    alter table aluno 
       drop 
       foreign key FK9ma9koxhhv7lhowufvteqirp1
mai 16, 2021 8:25:57 AM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection
INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@d3f4505] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.
Hibernate: 
    
    alter table disciplina 
       drop 
       foreign key FKkhdiw1swjoa2ml3md0mt8g4sf
Hibernate: 
    
    drop table if exists aluno
Hibernate: 
    
    drop table if exists cliente
Hibernate: 
    
    drop table if exists contrato_clt
Hibernate: 
    
    drop table if exists contrato_pj
Hibernate: 
    
    drop table if exists curso
Hibernate: 
    
    drop table if exists disciplina
Hibernate: 
    
    drop table if exists documento_identificacao
Hibernate: 
    
    drop table if exists empresa
Hibernate: 
    
    drop table if exists funcionario
Hibernate: 
    
    drop table if exists hibernate_sequences
Hibernate: 
    
    create table aluno (
       id integer not null auto_increment,
        nome varchar(255),
        documento_id integer,
        primary key (id)
    ) engine=InnoDB
mai 16, 2021 8:25:57 AM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection
INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@430b2699] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.
Hibernate: 
    
    create table cliente (
       id integer not null auto_increment,
        cpf varchar(255),
        nome VARCHAR(100) not null,
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table contrato_clt (
       id integer not null,
        fim datetime(6),
        inicio datetime(6),
        nome varchar(255),
        bonus float,
        salarioMensal float,
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table contrato_pj (
       id integer not null,
        fim datetime(6),
        inicio datetime(6),
        nome varchar(255),
        periodoEmMeses integer,
        valorHora float,
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table curso (
       id integer not null auto_increment,
        area varchar(255),
        codigo varchar(255),
        nome varchar(255),
        numSemestres integer,
        regime varchar(255),
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table disciplina (
       id integer not null auto_increment,
        codigo varchar(255),
        nome varchar(255),
        curso_id integer,
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table documento_identificacao (
       id integer not null auto_increment,
        nome varchar(255),
        valor varchar(255),
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table empresa (
       id integer not null auto_increment,
        email varchar(255),
        nomeContato varchar(255),
        telefone varchar(255),
        nome varchar(255),
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table funcionario (
       id integer not null,
        fim datetime(6),
        inicio datetime(6),
        nome varchar(255),
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table hibernate_sequences (
       sequence_name varchar(255) not null,
        next_val bigint,
        primary key (sequence_name)
    ) engine=InnoDB
Hibernate: 
    
    insert into hibernate_sequences(sequence_name, next_val) values ('default',0)
Hibernate: 
    
    alter table aluno 
       add constraint FK9ma9koxhhv7lhowufvteqirp1 
       foreign key (documento_id) 
       references documento_identificacao (id)
Hibernate: 
    
    alter table disciplina 
       add constraint FKkhdiw1swjoa2ml3md0mt8g4sf 
       foreign key (curso_id) 
       references curso (id)
mai 16, 2021 8:25:57 AM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Hibernate: 
    select
        tbl.next_val 
    from
        hibernate_sequences tbl 
    where
        tbl.sequence_name=? for update
            
Hibernate: 
    update
        hibernate_sequences 
    set
        next_val=?  
    where
        next_val=? 
        and sequence_name=?
Hibernate: 
    /* insert br.newtonpaiva.poo.u5.ex6.heranca.tabelaporhierarquia.Funcionario
        */ insert 
        into
            funcionario
            (fim, inicio, nome, id) 
        values
            (?, ?, ?, ?)
--- Salvo: (CREATE)
Funcionario [id=1, nome=José Pereira, inicio=2019-05-16T08:25:57.925744, fim=null]
---

Hibernate: 
    select
        tbl.next_val 
    from
        hibernate_sequences tbl 
    where
        tbl.sequence_name=? for update
            
Hibernate: 
    update
        hibernate_sequences 
    set
        next_val=?  
    where
        next_val=? 
        and sequence_name=?
Hibernate: 
    /* insert br.newtonpaiva.poo.u5.ex6.heranca.tabelaporhierarquia.ContratoClt
        */ insert 
        into
            contrato_clt
            (fim, inicio, nome, bonus, salarioMensal, id) 
        values
            (?, ?, ?, ?, ?, ?)
--- Salvo: (CREATE)
ContratoClt [salarioMensal=4000.0, bonus=200.0, toString()=Funcionario [id=2, nome=Maria Silva, inicio=2020-05-16T08:25:58.014144, fim=null]]
---

Hibernate: 
    select
        tbl.next_val 
    from
        hibernate_sequences tbl 
    where
        tbl.sequence_name=? for update
            
Hibernate: 
    update
        hibernate_sequences 
    set
        next_val=?  
    where
        next_val=? 
        and sequence_name=?
Hibernate: 
    /* insert br.newtonpaiva.poo.u5.ex6.heranca.tabelaporhierarquia.ContratoPj
        */ insert 
        into
            contrato_pj
            (fim, inicio, nome, periodoEmMeses, valorHora, id) 
        values
            (?, ?, ?, ?, ?, ?)
--- Salvo: (CREATE)
ContratoPj [valorHora=100.0, periodoEmMeses=26, toString()=Funcionario [id=3, nome=João Lima, inicio=2018-05-16T08:25:58.027583, fim=2021-05-16T08:25:58.027603]]
---

mai 16, 2021 8:25:58 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PoolState stop
INFO: HHH10001008: Cleaning up connection pool [jdbc:mysql://localhost:43306/banco?useTimezone=true&serverTimezone=UTC]

mai 16, 2021 8:25:55 AM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation
INFO: HHH000204: Processing PersistenceUnitInfo [name: BancoPU1]
mai 16, 2021 8:25:55 AM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.4.2.Final}
mai 16, 2021 8:25:55 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
mai 16, 2021 8:25:55 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
mai 16, 2021 8:25:55 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [com.mysql.cj.jdbc.Driver] at URL [jdbc:mysql://localhost:43306/banco?useTimezone=true&serverTimezone=UTC]
mai 16, 2021 8:25:55 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {password=****, user=root}
mai 16, 2021 8:25:55 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
mai 16, 2021 8:25:55 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
mai 16, 2021 8:25:56 AM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect
mai 16, 2021 8:25:56 AM org.hibernate.cfg.AnnotationBinder bindClass
WARN: HHH000499: Using @AttributeOverride or @AttributeOverrides in conjunction with entity inheritance is not supported: br.newtonpaiva.poo.u5.ex6.heranca.tabelaporhierarquia.ContratoPj. The overriding definitions are ignored.
mai 16, 2021 8:25:56 AM org.hibernate.cfg.AnnotationBinder bindClass
WARN: HHH000499: Using @AttributeOverride or @AttributeOverrides in conjunction with entity inheritance is not supported: br.newtonpaiva.poo.u5.ex6.heranca.tabelaporhierarquia.ContratoClt. The overriding definitions are ignored.
mai 16, 2021 8:25:56 AM org.hibernate.id.enhanced.TableGenerator determineDefaultSegmentValue
INFO: HHH000398: Explicit segment value for id generator [hibernate_sequences.sequence_name] suggested; using default [default]
Hibernate: 
    
    alter table aluno 
       drop 
       foreign key FK9ma9koxhhv7lhowufvteqirp1
mai 16, 2021 8:25:57 AM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection
INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@d3f4505] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.
Hibernate: 
    
    alter table disciplina 
       drop 
       foreign key FKkhdiw1swjoa2ml3md0mt8g4sf
Hibernate: 
    
    drop table if exists aluno
Hibernate: 
    
    drop table if exists cliente
Hibernate: 
    
    drop table if exists contrato_clt
Hibernate: 
    
    drop table if exists contrato_pj
Hibernate: 
    
    drop table if exists curso
Hibernate: 
    
    drop table if exists disciplina
Hibernate: 
    
    drop table if exists documento_identificacao
Hibernate: 
    
    drop table if exists empresa
Hibernate: 
    
    drop table if exists funcionario
Hibernate: 
    
    drop table if exists hibernate_sequences
Hibernate: 
    
    create table aluno (
       id integer not null auto_increment,
        nome varchar(255),
        documento_id integer,
        primary key (id)
    ) engine=InnoDB
mai 16, 2021 8:25:57 AM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection
INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@430b2699] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.
Hibernate: 
    
    create table cliente (
       id integer not null auto_increment,
        cpf varchar(255),
        nome VARCHAR(100) not null,
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table contrato_clt (
       id integer not null,
        fim datetime(6),
        inicio datetime(6),
        nome varchar(255),
        bonus float,
        salarioMensal float,
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table contrato_pj (
       id integer not null,
        fim datetime(6),
        inicio datetime(6),
        nome varchar(255),
        periodoEmMeses integer,
        valorHora float,
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table curso (
       id integer not null auto_increment,
        area varchar(255),
        codigo varchar(255),
        nome varchar(255),
        numSemestres integer,
        regime varchar(255),
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table disciplina (
       id integer not null auto_increment,
        codigo varchar(255),
        nome varchar(255),
        curso_id integer,
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table documento_identificacao (
       id integer not null auto_increment,
        nome varchar(255),
        valor varchar(255),
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table empresa (
       id integer not null auto_increment,
        email varchar(255),
        nomeContato varchar(255),
        telefone varchar(255),
        nome varchar(255),
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table funcionario (
       id integer not null,
        fim datetime(6),
        inicio datetime(6),
        nome varchar(255),
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
    create table hibernate_sequences (
       sequence_name varchar(255) not null,
        next_val bigint,
        primary key (sequence_name)
    ) engine=InnoDB
Hibernate: 
    
    insert into hibernate_sequences(sequence_name, next_val) values ('default',0)
Hibernate: 
    
    alter table aluno 
       add constraint FK9ma9koxhhv7lhowufvteqirp1 
       foreign key (documento_id) 
       references documento_identificacao (id)
Hibernate: 
    
    alter table disciplina 
       add constraint FKkhdiw1swjoa2ml3md0mt8g4sf 
       foreign key (curso_id) 
       references curso (id)
mai 16, 2021 8:25:57 AM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Hibernate: 
    select
        tbl.next_val 
    from
        hibernate_sequences tbl 
    where
        tbl.sequence_name=? for update
            
Hibernate: 
    update
        hibernate_sequences 
    set
        next_val=?  
    where
        next_val=? 
        and sequence_name=?
Hibernate: 
    /* insert br.newtonpaiva.poo.u5.ex6.heranca.tabelaporhierarquia.Funcionario
        */ insert 
        into
            funcionario
            (fim, inicio, nome, id) 
        values
            (?, ?, ?, ?)
--- Salvo: (CREATE)
Funcionario [id=1, nome=José Pereira, inicio=2019-05-16T08:25:57.925744, fim=null]
---

Hibernate: 
    select
        tbl.next_val 
    from
        hibernate_sequences tbl 
    where
        tbl.sequence_name=? for update
            
Hibernate: 
    update
        hibernate_sequences 
    set
        next_val=?  
    where
        next_val=? 
        and sequence_name=?
Hibernate: 
    /* insert br.newtonpaiva.poo.u5.ex6.heranca.tabelaporhierarquia.ContratoClt
        */ insert 
        into
            contrato_clt
            (fim, inicio, nome, bonus, salarioMensal, id) 
        values
            (?, ?, ?, ?, ?, ?)
--- Salvo: (CREATE)
ContratoClt [salarioMensal=4000.0, bonus=200.0, toString()=Funcionario [id=2, nome=Maria Silva, inicio=2020-05-16T08:25:58.014144, fim=null]]
---

Hibernate: 
    select
        tbl.next_val 
    from
        hibernate_sequences tbl 
    where
        tbl.sequence_name=? for update
            
Hibernate: 
    update
        hibernate_sequences 
    set
        next_val=?  
    where
        next_val=? 
        and sequence_name=?
Hibernate: 
    /* insert br.newtonpaiva.poo.u5.ex6.heranca.tabelaporhierarquia.ContratoPj
        */ insert 
        into
            contrato_pj
            (fim, inicio, nome, periodoEmMeses, valorHora, id) 
        values
            (?, ?, ?, ?, ?, ?)
--- Salvo: (CREATE)
ContratoPj [valorHora=100.0, periodoEmMeses=26, toString()=Funcionario [id=3, nome=João Lima, inicio=2018-05-16T08:25:58.027583, fim=2021-05-16T08:25:58.027603]]
---

mai 16, 2021 8:25:58 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PoolState stop
INFO: HHH10001008: Cleaning up connection pool [jdbc:mysql://localhost:43306/banco?useTimezone=true&serverTimezone=UTC]

Tabela por Subclasse

TABELA POR SUBCLASSE (Funcionário como classe abstrata):

Console:

    create table contrato_clt (
       bonus float,
        salarioMensal float,
        ID integer not null,
        primary key (ID)
    ) engine=InnoDB
Hibernate: 
    
    create table contrato_pj (
       periodoEmMeses integer,
        valorHora float,
        ID integer not null,
        primary key (ID)
    ) engine=InnoDB
Hibernate: 
    
    create table funcionario (
       id integer not null,
        fim datetime(6),
        inicio datetime(6),
        nome varchar(255),
        primary key (id)
    ) engine=InnoDB
Hibernate: 
    
Hibernate: 
    
    alter table contrato_clt 
       add constraint FK4mxwicqmm23oy0yydtcoo07oe 
       foreign key (ID) 
       references funcionario (id)
Hibernate: 
    
    alter table contrato_pj 
       add constraint FKe8egnitaujim82o8jn8wqgm9m 
       foreign key (ID) 
       references funcionario (id)

Hibernate: 
    /* insert br.newtonpaiva.poo.u5.ex6.heranca.tabelaporhierarquia.Funcionario
        */ insert 
        into
            funcionario
            (fim, inicio, nome, id) 
        values
            (?, ?, ?, ?)
--- Salvo: (CREATE)
Funcionario [id=1, nome=José Pereira, inicio=2019-05-16T08:41:00.308283, fim=null]
---

Hibernate: 
    select
        next_val as id_val 
    from
        hibernate_sequence for update
            
Hibernate: 
    update
        hibernate_sequence 
    set
        next_val= ? 
    where
        next_val=?
Hibernate: 
    /* insert br.newtonpaiva.poo.u5.ex6.heranca.tabelaporhierarquia.ContratoClt
        */ insert 
        into
            funcionario
            (fim, inicio, nome, id) 
        values
            (?, ?, ?, ?)
Hibernate: 
    /* insert br.newtonpaiva.poo.u5.ex6.heranca.tabelaporhierarquia.ContratoClt
        */ insert 
        into
            contrato_clt
            (bonus, salarioMensal, ID) 
        values
            (?, ?, ?)
--- Salvo: (CREATE)
ContratoClt [salarioMensal=4000.0, bonus=200.0, toString()=Funcionario [id=2, nome=Maria Silva, inicio=2020-05-16T08:41:00.396712, fim=null]]
---

Hibernate: 
    select
        next_val as id_val 
    from
        hibernate_sequence for update
            
Hibernate: 
    update
        hibernate_sequence 
    set
        next_val= ? 
    where
        next_val=?
Hibernate: 
    /* insert br.newtonpaiva.poo.u5.ex6.heranca.tabelaporhierarquia.ContratoPj
        */ insert 
        into
            funcionario
            (fim, inicio, nome, id) 
        values
            (?, ?, ?, ?)
Hibernate: 
    /* insert br.newtonpaiva.poo.u5.ex6.heranca.tabelaporhierarquia.ContratoPj
        */ insert 
        into
            contrato_pj
            (periodoEmMeses, valorHora, ID) 
        values
            (?, ?, ?)
--- Salvo: (CREATE)
ContratoPj [valorHora=100.0, periodoEmMeses=26, toString()=Funcionario [id=3, nome=João Lima, inicio=2018-05-16T08:41:00.419667, fim=2021-05-16T08:41:00.419693]]
---

mai 16, 2021 8:41:00 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PoolState stop
INFO: HHH10001008: Cleaning up connection pool [jdbc:mysql://localhost:43306/banco?useTimezone=true&serverTimezone=UTC]



mysql> desc funcionario;
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| id     | int(11)      | NO   | PRI | NULL    |       |
| fim    | datetime(6)  | YES  |     | NULL    |       |
| inicio | datetime(6)  | YES  |     | NULL    |       |
| nome   | varchar(255) | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> select * from funcionario;
+----+----------------------------+----------------------------+-------------+
| id | fim                        | inicio                     | nome        |
+----+----------------------------+----------------------------+-------------+
|  1 | NULL                       | 2020-05-16 11:43:36.216292 | Maria Silva |
|  2 | 2021-05-16 11:43:36.311732 | 2018-05-16 11:43:36.311705 | João Lima   |
+----+----------------------------+----------------------------+-------------+
2 rows in set (0.00 sec)

mysql> desc contrato_clt;
+---------------+---------+------+-----+---------+-------+
| Field         | Type    | Null | Key | Default | Extra |
+---------------+---------+------+-----+---------+-------+
| bonus         | float   | YES  |     | NULL    |       |
| salarioMensal | float   | YES  |     | NULL    |       |
| ID            | int(11) | NO   | PRI | NULL    |       |
+---------------+---------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> select * from contrato_clt;
+-------+---------------+----+
| bonus | salarioMensal | ID |
+-------+---------------+----+
|   200 |          4000 |  1 |
+-------+---------------+----+
1 row in set (0.00 sec)

mysql> desc contrato_pj;
+----------------+---------+------+-----+---------+-------+
| Field          | Type    | Null | Key | Default | Extra |
+----------------+---------+------+-----+---------+-------+
| periodoEmMeses | int(11) | YES  |     | NULL    |       |
| valorHora      | float   | YES  |     | NULL    |       |
| ID             | int(11) | NO   | PRI | NULL    |       |
+----------------+---------+------+-----+---------+-------+
3 rows in set (0.01 sec)

mysql> select * from contrato_pj;
+----------------+-----------+----+
| periodoEmMeses | valorHora | ID |
+----------------+-----------+----+
|             26 |       100 |  2 |
+----------------+-----------+----+
1 row in set (0.00 sec)


Nenhum comentário:

Postar um comentário