기본세팅
📂 com.oracle.oBootJpa02
📂 com.oracle.oBootJpa02
📂 com.oracle.oBootJpa02
id를 pk로 잡거나 시퀸스로 잡을때 Long타입 권장.
- 시퀸스명을 잡고 시퀸스를 만들수 있다.
@getter
, @setter
+ toString@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;
// }
}
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
---
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;
}
//관계설정
@ManyToOne
@JoinColumn(name = "team_id")
private Team team;
RDB에 객체를 못 넣으므로
Team
이란 객체를 선언해줄 경우 Member테이블에서 FK로Team
이 들어가는게 아니라Team
의 컬럼명인 Team_id가 들어간다.
작업시작
html
컨트롤러, 서비스,
📂 .domain
@Transient
특정 필드를 컬럼에 매핑하지 않음(매핑 무시)
controller ->service
1) 호출 Method : getListAllMember();
2) Model : 호출 Method Return 결과(memberList )
3) Return : List
Service -> Repository
1) 호출 Method : .findAll()
2) Return : List
<!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>
수정작업 가능 :
@{/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) |