Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • ManyToOne : 다대일 관계 매칭정보
  • JoinColumn : 외래키를 매핑때 사용함
  • mappedBy : 연관관계설정시 주인이 아님을 설정
  • OneToMany : 일대다 관계 매핑정보
  • OneToOne : 일대일 관계 매칭정보, 어느곳이나 외래키를 가짐
  • ManyToMany : 다대다 관계매칭정보, 맵핑테이블을 만들어서 사용하기를 권장
  • 연관관계주인 : 외래키가 있는곳이 주인이며 주인만이 수정가능 아닌경우 조회만가능


다대일 모델

위 샘플에서 사용자(User) 데이터 모델링에서,  사용자가 속한 그룹모델링을 구현해보겠습니다.

여러명의 사용자는 한개의 그룹에 속할수 있기때문에, 사용자의 입장에서 다대일 입니다.

즉 사용자의 모델링에서만.., 다대일 설정을 그룹 정보와 맺어주면됩니다.


Image Added

우리가 원하는 테이블 모델링은 위와같을 것이며, SQL문 없이  JPA를 이용해서만 작성할것입니다.



Code Block
languagejava
themeEmacs
titleGroupInfo 새롭게 정의
collapsetrue
@Entity
public class GroupInfo {
	@Id
    @GeneratedValue
	@Column(name = "GROUP_ID")
    private Integer id;
     
    private String name;
    

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	

}




Code Block
languagejava
themeEmacs
title사용자 모델링에 다대일 설정
collapsetrue
@Entity
public class User {
	@Id
    @GeneratedValue
    @Column(name = "USER_ID")
    private Integer id;

	private String name;

	private String email;
 
	@ManyToOne
	@JoinColumn(name = "GROUP_ID")
    private GroupInfo groupInfo;

    
    public GroupInfo getGroupInfo() {
		return groupInfo;
	}

	public void setGroupInfo(GroupInfo groupInfo) {
		this.groupInfo = groupInfo;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}
	

	
}


Panel

Test 코드

GroupInfo newGroup = new GroupInfo();
newGroup.setName("학생");
groupRepository.save(newGroup);

// 사용자 생성
User addUser = new User();
addUser.setName("minsu");
addUser.setEmail("test@x.com");
addUser.setGroupInfo(newGroup);

userRepository.save(addUser);

// 사용자 조회
Iterable<User> userList = userRepository.findAll();
userList.forEach(item->System.out.println(item.getName() ));






Info

다른 진영(.net) 에서도 JPA와 유사하게 데이터를 제어하고 있습니다.

Entity Framework

https://docs.microsoft.com/en-us/ef/core/

...