Oi, Marcos! Tudo bem?
Inicialmente, em relação a utilização das anotações @Embedded e @Embeddable em um banco de dados relacional, é importante lembrar que essas anotações são usadas para representar um tipo de relacionamento entre entidades chamado composição. Nesse caso, um objeto é usado como parte de outro objeto, mas ambos não têm uma existência independente.
Por exemplo, um endereço (rua, cidade, estado) faz sentido apenas quando está associado a uma entidade, como uma pessoa ou um médico. Portanto, mesmo que pareça que estamos indo contra a normalização do banco de dados, na verdade estamos apenas representando uma relação natural entre entidades em nosso modelo de domínio.
Em relação à como inserir dados em duas tabelas distintas a partir de uma única requisição, podemos fazer isso usando uma transação, garantindo que ambas as operações de inserção ocorram com sucesso ou sejam revertidas em caso de falha. No Spring Boot, podemos usar a anotação @Transactional no método do serviço que lida com a criação do médico e do endereço.
Nesse caso, se algo der errado ao salvar o médico ou o endereço, a transação será revertida e nenhum dado será salvo no banco de dados.
Espero ter ajudado!
Um forte abraço e bons estudos!
Caso este post tenha te ajudado, por favor, marcar como solucionado ✓