Duvida mapeamento Cascade

Bom dia , sou iniciante no hibernate e me deparei com a seguinte duvida.
Estou usando o padrão , ou no caso ante-padão , session per operation ( estou abrindo uma sessao toda vez que preciso consultar no banco e fechando antes de trazer os dados para a camada de controle ) e tenho duas entidades , uma delas é um usuario que possui dentro de si uma lista de mensagens outra é a mensagem que possui dentro de si um usuario .Fiz o mapeamento correto ( sei disso por que o tabelas ficaram da maneira como eu imaginei ) , e coloquei o atributo CASCADE como ALL ( fiz isso pois como ja disse sou iniciante e esse parecia se o mais certo ) , mas agora apareceu um problema crio uma mensagem nova eu seto apenas o id do seu atributo usuario ( mensagem.getUsuario().setId(1) ) , e quando ele vai salvar no banco ele simplesmente vai na tabela usuario e coloca todos os atributos do usuario com valor NULL . Eu sei por que isso acontece , é por causa do cascade , li todos os tipos de cascade que tem e ainda assim eu não estou entendendo qual devo usar.Quero que quando o usuario for salvo se ele tiver mensagens que elas seja salvas tambem , e quero que a mensagem quando for não toque na tabela de usuario .Alguem sabe como resolvo meu problema ?

Segue os mapeamentos :


public class Usuario {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="idusuario")
	private Integer id;
	@Column(unique=true)
	private String login;
	@Column(nullable=false)
	private String senha;
    @OneToMany(mappedBy="usuario" , fetch=FetchType.LAZY)
	@Cascade(CascadeType.ALL)
    List<Mensagem> mensagens;
}

public class Mensagem {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="idmensagem")
	private Integer id;
	
	private String conteudo;
    @ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="idusuario")
	@Cascade(CascadeType.ALL)
	private Usuario usuario;

}

oi, nao faça

mensagem.getUsuario().setId(1)

e sim

mensagem.setUsuario(usuarioRenan);

neste casso na classe Mensagem, não existe necessidade de @Cascade no atributo usuario.

abrassss