API Rest com Spring Boot

Olá pessoal,

Estou fazendo uns videos sobre API Rest com Spring Boot e até agora fiz exemplos báśicos e quando tentei aumentar a complexidade estou apanhando.

Minha ideia é no Post /classe, criar uma nova classe com alunos recebendo o seguinte json:

{
  "nome": "Primeira Serie - A".
  "alunos": [
    "João",
    "José",
    "Maria"
  ]
}    

E o retornar:
{
“id_classe”: 101
}

Acontece que ele salva a classe, mas não salva os alunos e não tenho a ideia de como mostar somente o id da classe.

Criei as seguintes classes em Java:

Model
Classe.java
package com.example.classe.model;

//Import’s suprimidos

@Entity
@Table(name = “classe”)
public class Classe {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;

private String nome;

@OneToMany(mappedBy = "classe")
private Set<Aluno> alunos = new HashSet<Aluno>();	

//Get's e Set's suprimidos

}

Aluno.java
package com.example.classe.model;

//Import’s suprimidos

@Entity
@Table(name = “aluno”)
public class Aluno {

private static int tempID = 0;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String nome;

@ManyToOne
@JoinColumn(name = "id_classe")
@JsonBackReference
private Classe classe;

public Aluno(String nome) {
	tempID++;
	this.id = tempID;
	this.nome = nome;
}

public Aluno() {
}

//Get's e Set's suprimidos	

}

Repository
ClasseRepository.java
package com.example.classe.repository;

//Import’s suprimidos

@Repository
public interface ClasseRepository extends JpaRepository<Classe, Integer> {

public List<Classe> findAll();

}

Controller
ClasseController.java
package com.example.classe.controller;

//Import’s suprimidos

@RestController
@RequestMapping("/classe")
public class ClasseController {

@Autowired
private ClasseRepository classeRepo;

@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<Collection<Classe>> getClasse() {
	return new ResponseEntity<>(classeRepo.findAll(), HttpStatus.OK);
}

@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<?> salvarClasse(@RequestBody Classe classe) {
	return new ResponseEntity<>(classeRepo.saveAndFlush(classe), HttpStatus.CREATED);
}

}

Será que estou fazendo tudo errado ou não entendi o conceito? Mas queria entender como fazer dessa forma.

Desde já Obrigado.

1 - Quando você tem uma relação qualquer entre 2 classes (1:1, 1:N ou N:M), bidirecional, você precisa informar adequadamente as instâncias que pertencem a cada objeto.
Desta forma, você será obrigado a inserir, em cada aluno, a instância da classe (classe aqui ficou confuso, pois, você deu o nome de Classe à sua Classe que representa classes) a qual ele pertence e, na classe, inserir cada aluno que ela possui. Depois, sim, realizar a persistência.
2 - Para o método

@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<?> salvarClasse(@RequestBody Classe classe) {
    return new ResponseEntity<>(classeRepo.saveAndFlush(classe), HttpStatus.CREATED);
}

Uma solução possível é você devolver a classe inteira ou, simplesmente, criar um objeto classe onde define apenas o seu id ou, ainda, definir o ResponseEntity como sendo de String e devolver algo como

return new ResponseEntity<>(classeRepo.saveAndFlush("{\"id_classe\":" + idDaClasse + "}"), HttpStatus.CREATED);

Entendeu?

Sua dúvida não tem nada a ver com REST ou Spring.

Minha sugestão é, aprende hibernate primeiro, depois se preocupa com o RESTO. Se o seu objetivo é aprender REST, não precisa usar hibernate (ou mesmo banco de dados), primeiro porque você nunca usou antes como pode perceber pelo seu post, e aprender varias coisas ao mesmo tempo é mais complicado, segundo porque dificilmente você vai usar os dois juntos assim, pra expor uma app hibernate diretamente via REST,

Concordo com o @pfk66.
Mas irei apresentar uma sugestão.
Se a ideia é um CRUD, já pensou em incluir o spring data? É rapidinho para aprender e super tranquilo de usar.