2
respostas

JAVA - Criar Sequencia no BD

Olá a todos, poderiam me dar um exemplo de como faço para criar uma sequencia de registros. No caso ao cadastrar um cliente, uma conta para este cliente seria automaticamente gerada com um numero por exemplo 13001 e assim sucessivamente. Eu já criei o cadastramento do cliente e preciso ao mesmo tempo cadastrar uma conta com numero e valor e o numero do cliente.

<h:form>

                    <div class="form-row">
                        <div class="form-group col-md-6">
                            <label for="inputName">Nome</label>
                            <h:inputText value="#{adminClientesBean.cliente.nome}" id="nome"
                                type="text" class="form-control" a:autofocus="true" />
                        </div>
                        <div class="form-group col-md-6">
                            <label for="inputLastName">Sobrenome</label>
                            <h:inputText value="#{adminClientesBean.cliente.sobrenome}"
                                id="sobrenome" type="text" class="form-control" />
                        </div>
                    </div>

                    <div class="form-row">
                        <div class="form-group col-md-6">
                            <label for="inputEmail4">Email</label>
                            <h:inputText value="#{adminClientesBean.cliente.email}"
                                id="email" type="email" class="form-control"
                                requiredMessage="Campo obrigatorio" />

                        </div>
<h:commandButton value="Cadastrar" class="btn btn-primary"
                        action="#{adminClientesBean.save}"></h:commandButton>

</h:form>
@Model
public class AdminClientesBean {

    private Cliente cliente = new Cliente();
    @Inject
    private ClienteDAO clienteDAO;
    @Inject
    private MessagesHelper messagesHelper;
    private List<Cliente> clientes;

    @Transactional
    public String save(){

        clienteDAO.save(cliente);

        messagesHelper.addFlash(
                new FacesMessage("Cliente gravado com sucesso"));
        return "/site/conta-cliente?faces-redirect=true\"";

    }
 @Entity
  public class Cliente {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;        
private String nome;    
private String sobrenome;
@Email
@NotBlank
@Column(unique=true)
private String email;
private String senha;    


ClienteDAO
     public class ClienteDAO implements Serializable{    

private static final long serialVersionUID = 1L;

@PersistenceContext
private EntityManager manager;

public void save(Cliente cliente) {
    manager.persist(cliente);
}

public ClienteDAO(){

}

`

2 respostas

Oi Sérgio, tudo bem?

Nesse caso, toda vez que você for cadastrar um cliente, faz parte da regra de negócio criar e vincular uma Conta a ele, correto? Você terá que criar na sua classe de serviço essa regra, criando uma conta e alocando ao cliente toda vez que for solicitado o cadastro de um cliente. Por exemplo, algo assim:

public class ClienteService {
    public void cadastrar(Cliente cliente) {
        Conta conta = new Conta();
        cliente.setConta(conta);
        clienteDAO.save(cliente);
    }

Lembrando que, pelo fato da entidade Cliente ter sua chave ID anotada com @GeneratedValue o banco de dados vai ser encarregar de gerar e atribuir esse identificador ao seu registro sendo criado.

Oi Otávio muito obrigado pelo seu retorno. Eu editei o código para que você possa ver os arquivos ref. ao cadastro do cliente. Agradeceria se você puder me tirar esta duvida, veja se entendi corretamente. Deverei criar a classe ClienteService que será responsável (ao cadastrar o cliente) gerar uma conta e atribuir o id ao cliente, correto? O java cria tudo isso quando o usuario clicar o botão gravar os dados do cliente? O botão gravar referencia ao adminClientesBean.save. Lá tenho o método save para salvar os dados do cliente. Quando e como a classe ClienteService é acionada para abrir uma conta e atribuir o id ao cliente? Seria quando os dados são enviados para o adminClientesBean.save ?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software