Cadastro com Hibernate em tabelas multiplas

Eu tenho um formulário de cliente e este formulário contem dados para serem inseridos em duas tabelas diferentes, no casa a tabela pessoa e a endereço, como posso realizar este inserte em tabelas múltiplas com o hibernate?
Alguém tem um exemplo de como pode ficar a parte do DAO para inserção?

Classe Usuario (ou pessoa pra você)

@Entity
public class Usuario implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer idUsuario;
    
    @Column(length = 100, nullable = false)
    private String nomeCompleto;
    
    @Column(length = 20, unique = true, nullable = false, updatable = false) //Único login no banco
    private String login;
    
    @Column(length = 50, nullable = false)
    private String senha;
    
    @Column(unique = true, nullable = false, updatable = false) //Único e-mail no banco
    private String email;
    
    @Enumerated(EnumType.STRING)
    @Column(nullable = false)
    private TipoAdm tipoAdm;
    
    @Column(length = 11, unique = true, nullable = false) //Único CPF no banco
    private String cpf;
    
    @Column(length = 15, unique = true, nullable = false) //Único RG no banco
    private String rg;  
    
    @Column(length = 14, nullable = false)
    private String telefone;
    
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuario", fetch = FetchType.LAZY)
    private List<Endereco> enderecos;

Classe Endereço :

@Entity
public class Endereco implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer idEndereco;

@Column(length = 8, unique = true, nullable = false) //Único CEP no banco
private String cep;

@Column(length = 100, nullable = false)
private String rua;

@Column(length = 100, nullable = false)
private String bairro;

@Column(length = 2, nullable = false)
private String uf;

@Column(length = 6, nullable = false)
private int numero;

@Column(length = 60, nullable = false)
private String cidade;

@Column(length = 50, nullable = false)
private String complemento;

@ManyToOne(cascade = CascadeType.ALL)
private Usuario usuario;