Herança

Prezados boa tarde.

precisei usar herança na modelagem. Programo usando primefaces e hibernate. Estou com dúvida para salvar as informações na tabela, pois na tela xhtml vejam:

<h:outputLabel value="Nome: " for="nome"/>
<p:inputText id="nome" label="Nome" value="#{funcionarioBean.funcionario.nome}" required="true" size="80" />  
<h:outputLabel value="CPF: " for="cpf"/>
<p:inputText id="cpf" label="CPF" value="#{funcionarioBean.funcionario.cpf}" required="true" size="11" />  
<h:outputLabel value="Prédio: " for="predio"/>
<p:inputText id="predio" label="Predio" value="#{funcionarioBean.funcionario.predio}" required="true" size="30" />  
<h:outputLabel value="Andar: " for="andar"/>
<p:inputText id="andar" label="Andar" value="#{funcionarioBean.funcionario.andar}" required="true" size="10" />  
<h:outputLabel value="Sala: " for="sala"/>
<p:inputText id="sala" label="Sala" value="#{funcionarioBean.funcionario.sala}" required="true" size="10" />  
<h:outputLabel value="Ramal: " for="ramal"/>
<p:inputText id="ramal" label="Ramal" value="#{funcionarioBean.funcionario.ramal}" required="true" size="10" />  

<h:outputLabel value="Tipo: " for="tipo"/>
        <p:selectOneRadio id="tipo" value="#{funcionarioBean.tipoFuncionario}">  
        <p:ajax event="change" update="cadastro" listener="#{funcionarioBean.metodo}" />
        	<f:selectItem itemLabel="Estagiario" itemValue="1" /> 
            <f:selectItem itemLabel="Terceirizado" itemValue="2" />  
            <f:selectItem itemLabel="Servidor" itemValue="3" />                           
        </p:selectOneRadio>  

<h:outputLabel value="Login Fiscal: " for="loginFiscalE" rendered="#{funcionarioBean.atributosEstagiario}"/>
<p:inputText id="loginFiscalE" label="LoginFiscalE" value="#{funcionarioBean.estagiario.loginFiscal}" required="true" size="30"  rendered="#{funcionarioBean.atributosEstagiario}"/>
<h:outputLabel value="Nome Fiscal: " for="nomeFiscalE" rendered="#{funcionarioBean.atributosEstagiario}"/>
<p:inputText id="nomeFiscalE" label="NomeFiscalE" value="#{funcionarioBean.estagiario.fiscalContrato}" required="true" size="50"  rendered="#{funcionarioBean.atributosEstagiario}"/>

Sendo estagiário um funcionário, como fazer para salvar isso? Salvo um objeto depois o outro? Para coletar estas informações do value do inputtext que são comuns as outras classes, jogo para objeto funcionário conforme código?

Primeiro, você é quem define que estrutura quer seguir, seja no banco de dados ou na sua xhtml.
Pensando assim, você é quem diz como vai salvar e, após decidir como os dados devem ser persistidos.

Obrigado por responder. Mas existe alguma boa prática neste caso? Você teria algum exemplo?

Pesquise sobre mapeamento objeto relacional.