영속성 컨텍스트에서 관리한다고 하면 객체의 변화를 별도로 처리해주지 않더라고 DB에 반영되게 된다.
@Service
public class UserService{
@AutoWired
private EntityManager entityManager;
//@AutoWired
//private UserRepository userRepository;
@Transactional
public void put(){
User user = new User();
user.setName("newUser");
user.setEmail("newUser@fastcampus.com");
//userRepository.save(user);
entityManager.persist(user);
}
}
result
@Service
public class UserService{
@AutoWired
private EntityManager entityManager;
//@AutoWired
//private UserRepository userRepository;
@Transactional
public void put(){
User user = new User();
user.setName("newUser");
user.setEmail("newUser@fastcampus.com");
//userRepository.save(user);
entityManager.persist(user);
user.setName("newUserAfterPersist");
--> insert 이후 update가 이루어지며 별도의 save를 요청하지 않아도 DB에 반영되게 된다.
}
}
@Service
public class UserService{
@AutoWired
private EntityManager entityManager;
//@AutoWired
//private UserRepository userRepository;
@Transactional
public void put(){
User user = new User();
user.setName("newUser");
user.setEmail("newUser@fastcampus.com");
//userRepository.save(user);
entityManager.persist(user);
entityManager.detach(user); --->추가
---->persist 이후에 detach를 선언하게 되면 해당 entity는 영속성 컨텍스트에서 더 이상 관리하지 않게 된다.
user.setName("newUserAfterPersist");
--> insert 이후 update가 이루어지며 별도의 save를 요청하지 않아도 DB에 반영되게 된다.
}
}
Result
영속성에서 벗어난 객체이더라도 merge를 선언하게 되면 db에 반영되게 된다
@Service
public class UserService{
@AutoWired
private EntityManager entityManager;
//@AutoWired
//private UserRepository userRepository;
@Transactional
public void put(){
User user = new User();
user.setName("newUser");
user.setEmail("newUser@fastcampus.com");
//userRepository.save(user);
entityManager.persist(user);
entityManager.detach(user);
---->persist 이후에 detach를 선언하게 되면 해당 entity는 영속성 컨텍스트에서 더 이상 관리하지 않게 된다.
user.setName("newUserAfterPersist");
--> insert 이후 update가 이루어지며 별도의 save를 요청하지 않아도 DB에 반영되게 된다.
entityManager.merge(user); --->추가
}
}
Result
이 처럼 하나하나 관리해주는 것 보다 save()를 사용하게 되면 모든걸 처리해주기 때문에
모든 처리가 끝나면 save()를 선언 해 주는것도 하나의 방법이다.
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는Java/Spring웹개발마스터초격차패키지Online
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.