안녕하세요 지금 국비교육 3개월차입니다.
교육생이 가장 많이 털려나간다는 스프링 MVC 모델 2 부분을 배우고 있는데요.
자바문법, SQL쿼리문만 떼고 MVC를 이해하려니까 쉽지가 않네요..
VO와 DTO가 있는것부터 없는것, 어떤 분이 한건 또 Repository가 있고 Form도 있구요.
MVC 패턴을 수도코드(한글)로 작성해서 공부하면 이해가 쉽지 않을까 싶어서 작성해보았는데요
제가 이해하고 있는 부분이 맞는지, 틀리다면 정정해주시길 간곡히 청해봅니다
------------------------------
개발환경 : 자바 스프링, jpa로 SQL쿼리문 자동작성 및 생성
목표 : 회원가입을 MVC로 표현
설명 : 회원가입 버튼은 임의로 빨간색 버튼이라고 가정,
버튼을 누르면 "/member" 링크로 이동 <a href="~/member">
members 페이지에서 form으로 account,password,email을 submit
submit한 내용 DB에 저장
---컨트롤러----
public class 빨간회원가입버튼 {
@GetMapping("/members")
public String 멤버스링크로이동하기 { return "templates/members.html }
@PostMapping("/members)
public String 회원가입양식전송하기(MemberDTO MemberDTO의이름) {
회원 신규회원 = new 회원();
신규회원.setId(memberDTO.getId());
신규회원.setaccount(memberDTO.getaccount());
신규회원.setpassword(memberDTO.setpassword());
신규회원.setemail(memberDTO.setemail());
멤버저장공간.저장하기(신규회원) //멤버리포지터리
--------컨트롤러 끝-------
--------모델:회원 DTO----------
@getter @setter
public class 회원 {
@Id //DB테이블에서 primary key로 잡힘
@Column(name="member_id" //DB에 자동생성 및 저장될 컬럼이름 "member_id"
@GeneratedValue(strategy = GenerationType.AUTO) //member_id값 자동생성
private string id;
@Column
private string account;
@Column
private string password;
@Column
private string email; }
-------모델:회원DTO 끝---------------
-------모델:회원저장공간(리포지터리?)------------
public interface 회원저장공간 extends JpaRepository<회원, Long> {
회원 저장하기(회원 member_id, account, password, email);
//'회원의 정보를 저장한다'는 (행동)을 정의
-------모델:회원리포지터리 끝---------
-------모델:회원서비스----------------
public class 회원이할수있는것 {
private final 회원저장공간 회원저장공간의이름;
public 회원이할수있는것(회원저장공간 회원저장공간의이름) {
this.회원저장공간의이름 = 회원저장공간의이름
// ++여기서 말하는 공간의이름은 ++ 이거다(?)
public Long 회원가입하기(신규회원 n번째회원)
회원저장공간.저장하기(n번째회원);
//여기서 무언가를 리턴해야되는 것 같은데 모르겠습니다
//회원의 정보로 무언가를 하고 싶다면 이곳과 Repository에 행동을 정의
//예를 들면 account를 조회하고 싶다면 Repository에 조회하기란 행동 정의 후
//회원이할수있는것 클래스(=Service)에도 추가하기?
}
-------모델:회원서비스 끝-------------
국비충인 제 수준이 낮은거 알고 있습니다.
코딩에 대해 물어보는 것도 괴팍하게 물어보는구나 싶으시겠지만
이 MVC를 못넘기면 나중에 프로젝트 만들기도 벅차다고 하여 꼭 이해하고 싶습니다
바쁜데 시간내 읽어주셔서 감사합니다
리턴 필요없음 - dc App
id를db에서 발급해주는 상황이면 생성된 객체나 id만 노출하면 됨 - dc App
근데 왜 서비스 클래스에 레포지터리 있는데 컨트롤러에서 서비스 안쓰고 레포씀? - dc App
제가 MVC에 관해 이해를 못해서 그런 것 같습니다.. 어디서 어느 객체를 써야하고 그런 것도 아직 정리가 안되네요
야랄말고 코비의 스프링 정독해라 패버리고싶다 진짜