[spring Boot]_10일차_JPA예제-회원검색_수정세팅

youuu·2022년 10월 28일
0

SPRING

목록 보기
19/33
post-thumbnail

기본세팅


📂 com.oracle.oBootJpa02

📋 OBootJpa02Application.java

📂 com.oracle.oBootJpa02

📋 OBootJpa02Application.java

📂 com.oracle.oBootJpa02

📋 OBootJpa02Application.java


💡 어노테이션으로 시퀸스, 컬럼잡기


🚩1. Member 만들기


1. 조건 : Entity table->member2 Long id String name Long sal Getter/Setter/ToString

📋 Member.java

id를 pk로 잡거나 시퀸스로 잡을때 Long타입 권장.

  • 시퀸스명을 잡고 시퀸스를 만들수 있다.
  • 두가지 방법으로 만들 수 있다.
  1. @getter, @setter + toString
  2. @Data
package com.oracle.oBootJpa02.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import lombok.Data;
//import lombok.Getter;
//import lombok.Setter;

@Entity
//@Getter
//@Setter
@Data
@SequenceGenerator(name = "member_seq_gen",				  //객체 시퀸스
			       sequenceName = "member_seq_generator", //DB 시퀸스
			       initialValue = 1,
			       allocationSize = 1
				  )
@Table(name="member2")
public class Member {
	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE,
					generator = "member_seq_gen"
					)
	@Column(name = "member_id", precision = 10)
	private Long   id;
	@Column(name = "user_name", length = 50)
	private String name;
	private Long   sal;
	
//	@Override
//	public String toString() {
//		String str = "";
//		str = "[id:" + this.id + ", name:" + this.name + ", sal:" + this.sal + "]";
//		
//		return str;
//	}
	
}

🚩2. Team 만들기


Entity
table->Team
Long   team_id (PK)
String name(column-->teamname) 
Getter/Setter/ToString
 1) 객체  SEQ  team_seq_gen(PK에 할당)
 2) DB  SEQ  team_seq_generator
 
 ---

📋 Team.java

package com.oracle.oBootJpa01.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;

import lombok.Data;

@Entity
@Data
@SequenceGenerator(name 			= "team_seq_gen",
				   sequenceName 	= "team_seq_generator",
				   initialValue 	= 1,
				   allocationSize	= 1
				  )
public class Team {
	@Id
	@GeneratedValue(strategy 	= GenerationType.SEQUENCE,
					generator	= "team_seq_gen"
			)
	private Long team_id;
	@Column(name = "team_name")
	private String name;
}

🚩3. Member에서 Team 관계설정


	//관계설정
	@ManyToOne
	@JoinColumn(name = "team_id")
	private Team team;

RDB에 객체를 못 넣으므로 Team이란 객체를 선언해줄 경우 Member테이블에서 FK로 Team이 들어가는게 아니라 Team의 컬럼명인 Team_id가 들어간다.


작업시작


🌿 1. 화면 만들기

html

컨트롤러, 서비스,

📂 .domain

📋 Member.java

@Transient 특정 필드를 컬럼에 매핑하지 않음(매핑 무시)


🌍 수업중 과제 : 리스트 조회페이지 만들기.

  1. controller ->service
    1) 호출 Method : getListAllMember();
    2) Model : 호출 Method Return 결과(memberList )
    3) Return : List

  2. Service -> Repository
    1) 호출 Method : .findAll()
    2) Return : List

  1. Repository
    1) findAll() 수행
    2) Return : List

💻📋 createMemberForm.java

  <!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>JPA 회원등록2 페이지</title>
</head>
<body>
	<h1>JPA 회원등록2</h1>
	<div class="container">
		<form action="/memberSave" method="post">
				회원이름 : <input type="text" id="name" name="name" placeholder="회원 이름을 입력하세요">
				팀   이름 : <input type="text" id="name" name="teamname" placeholder="팀이름을 입력하세요">
			<button type="submit">등록</button>
		</form>
	</div>
</body>

💻📋 memberList.java

수정작업 가능 : @{/memberModifyForm(id=${member.id})}

  <!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<div class="container">
		<table border="1">
			<thead>
			<tr>
				<th>No</th>
				<th>회원이름</th>
				<th>팀이름</th>
			</tr>
			</thead>
			<tbody>
				<tr th:each="member : ${members}">
					<td th:text="${member.id}"></td>
					<td><a th:href="@{/memberModifyForm(id=${member.id})}" th:text="${member.name}"></a></td>
					<td th:text="${member.team.name}"></td>
				</tr>
			</tbody>
		</table>
	</div>
</body>
</html>

💻 결과화면 :



작업 순서, 내용정리 참고


참고글




⭐ 수정하기


Method 종류내용
@GET정보를 요청하기위해 사용(Read)
POST정보를 입력하기위해 사용(Create)
PUT정보를 업데이트하기위해 사용(Update)
DELETE정보를 삭제하기위해 사용(Delete)

profile
공부중인 주니어 개발자

0개의 댓글