728x90

this 3

(코틀린) 주 생성자와 보조 생성자

주 생성자와 보조 생성자는 모두 클래스의 생성자이다. 따라서, 객체를 생성할 때 호출되는 건 똑같다. 그리고 클래스 안에 주 생성자만 선언하든, 보조 생성자만 선언하든 그것은 개발자 마음이다. 단지, 주 생성자와 보조 생성자를 모두 선언할 경우 보조 생성자로 객체를 생성할 때에는 반드시 주 생성자가 실행되게 만들어야 한다는 규칙이 있다. 이러한 규칙은 필수 매개변수와 실행 구문을 주 생성자에 작성하고 보조 생성자가 실행될 때 주 생성자도 함께 실행되게 하려는 의도이다. 결국 객체를 여러 가지 형태로 생성할 수 있도록 생성자의 매개변수를 다양하게 구성할 때 생성자의 공통된 코드는 주 생성자에 작성하라는 의미로 이해할 수 있다. class User(name: String){ constructor(name: ..

연관관계 편의 메소드 작성 시 주의사항(part.2)

사실 setTeam() 메소드에는 버그가 있다. member1.setTeam(teamA); //1 member2.setTeam(teamB); //2 Member findMEmber = teamA.getMember(); //member1이 여전히 조회된다. teamB로 변경할 때 teamA -> member1 관계를 제거하지 않았다. 연관관계를 변경할 때는 기존 팀이 있으면 기존 팀과 회원의 연관관계를 삭제하는 코드를 추가해야 한다. 따라서 다음 코드처럼 기존 관계를 제거하도록 코드를 수정해야 한다. public void setTeam(Team team) { //기존 팀과 관계를 제거 if (this.team != null) { this.team.getMembers().remove(this); //this..

JPA 2022.06.12

연관관계 편의 메소드(part.1)

양방향 연관관계는 결국 양쪽 다 신경 써야 한다. 다음처럼 member.setTeam(team) 과 team.getMembers().add(member)를 각각 호출하다 보면 실수로 둘 중 하나만 호출해서 양항향이 깨질 수 있다. member.setTeam(team); team.getMembers().add(member); 양방향 관계에서 두 코드는 하나인 것 처럼 사용하는 것이 안전하다. Member 클래스의 setTeam() 메소드를 수정해서 코드를 리팩토링해보자. public class Member { private Team team; public void setTeam(Team team){ this.team = team; team.getMembers().add(this);//this 는 membe..

JPA 2022.06.12
728x90