diff --git a/.gitignore b/.gitignore
index 524f096..17f62d1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,5 @@
# Compiled class file
-*.class
+#*.class
# Log file
*.log
diff --git a/.idea/material_theme_project_new.xml b/.idea/material_theme_project_new.xml
new file mode 100644
index 0000000..e68af01
--- /dev/null
+++ b/.idea/material_theme_project_new.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..0cadd67
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ "lastFilter": {
+ "state": "OPEN",
+ "assignee": "cjsqudwns"
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ "selectedUrlAndAccountId": {
+ "url": "https://github.com/KingZuto/notice-board-practice.git",
+ "accountId": "04a02cd4-e822-46fb-9d88-a777ae4ac761"
+ }
+}
+
+
+
+ {
+ "associatedIndex": 8
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1747031575053
+
+
+ 1747031575053
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/app/api/controller/EmpAPIController.java b/src/main/java/app/api/controller/EmpAPIController.java
new file mode 100644
index 0000000..80f9f5e
--- /dev/null
+++ b/src/main/java/app/api/controller/EmpAPIController.java
@@ -0,0 +1,25 @@
+package app.api.controller;
+
+import app.dto.EmpDto;
+import app.entity.Dept;
+import app.entity.Emp;
+import app.repository.EmpRepository;
+import app.service.EmpService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/api")
+public class EmpAPIController {
+
+ private final EmpService empService;
+
+ @PutMapping("/emp/{empno}")
+ public EmpDto updateEmp(@RequestBody EmpDto updateEmp, @PathVariable("empno") Integer empno) {
+
+ Emp emp = empService.updateEmp(updateEmp, empno);
+
+ return EmpDto.from(emp);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/app/dto/EmpDto.java b/src/main/java/app/dto/EmpDto.java
new file mode 100644
index 0000000..0059e77
--- /dev/null
+++ b/src/main/java/app/dto/EmpDto.java
@@ -0,0 +1,43 @@
+package app.dto;
+
+import app.entity.Emp;
+import lombok.Getter;
+import lombok.ToString;
+
+import java.time.LocalDate;
+
+@ToString
+@Getter
+public class EmpDto {
+ private Integer empno;
+ private String ename;
+ private String job;
+ private Integer mgr;
+ private LocalDate hiredate;
+ private Double sal;
+ private Double comm;
+ private Integer deptno;
+
+ public EmpDto(Integer empno, String ename, String job, Integer mgr, LocalDate hiredate, Double sal, Double comm, Integer deptno) {
+ this.empno = empno;
+ this.ename = ename;
+ this.job = job;
+ this.mgr = mgr;
+ this.hiredate = hiredate;
+ this.sal = sal;
+ this.comm = comm;
+ this.deptno = deptno;
+ }
+
+ public static EmpDto of(Integer empno, String ename, String job, Integer mgr, LocalDate hiredate, Double sal, Double comm, Integer deptno) {
+ return new EmpDto(empno, ename, job, mgr, hiredate, sal, comm, deptno);
+ }
+
+ public static EmpDto from(Emp emp){
+ return of(emp.getEmpno(), emp.getEname(), emp.getJob(), emp.getMgr(), emp.getHiredate(), emp.getSal(), emp.getComm(), emp.getDept().getDeptno());
+ }
+}
+
+
+
+
diff --git a/src/main/java/app/entity/Emp.java b/src/main/java/app/entity/Emp.java
new file mode 100644
index 0000000..bb09461
--- /dev/null
+++ b/src/main/java/app/entity/Emp.java
@@ -0,0 +1,67 @@
+package app.entity;
+
+import app.dto.EmpDto;
+import app.entity.Dept;
+import jakarta.persistence.*;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+import java.time.LocalDate;
+
+@NoArgsConstructor
+@Getter
+@ToString
+@Builder
+@Entity
+public class Emp {
+ @Id
+ @Column(name = "empno")
+ private Integer empno;
+
+ @Column(name = "ename")
+ private String ename;
+
+ @Column(name = "job")
+ private String job;
+
+ @Column(name = "mgr")
+ private Integer mgr;
+
+ @Column(name = "hiredate")
+ private LocalDate hiredate;
+
+ @Column(name = "sal")
+ private Double sal;
+
+ @Column(name = "comm")
+ private Double comm;
+
+ @ManyToOne
+ @JoinColumn(name = "deptno")
+ private Dept dept;
+
+ @Builder
+ public Emp(int empno, String ename, String job, Integer mgr, LocalDate hiredate, Double sal, Double comm, Dept dept) {
+ this.empno = empno;
+ this.ename = ename;
+ this.job = job;
+ this.mgr = mgr;
+ this.hiredate = hiredate;
+ this.sal = sal;
+ this.comm = comm;
+ this.dept = dept;
+ }
+
+ public void updateInfo(EmpDto updateEmp, Dept updateDept) {
+ this.empno = updateEmp.getEmpno();
+ this.ename = updateEmp.getEname();
+ this.job = updateEmp.getJob();
+ this.mgr = updateEmp.getMgr();
+ this.hiredate = updateEmp.getHiredate();
+ this.sal = updateEmp.getSal();
+ this.comm = updateEmp.getComm();
+ this.dept = updateDept;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/app/service/EmpService.java b/src/main/java/app/service/EmpService.java
new file mode 100644
index 0000000..7ef3b88
--- /dev/null
+++ b/src/main/java/app/service/EmpService.java
@@ -0,0 +1,32 @@
+package app.service;
+
+import app.dto.EmpDto;
+import app.entity.Dept;
+import app.entity.Emp;
+import app.repository.DeptRepository;
+import app.repository.EmpRepository;
+import jakarta.persistence.EntityNotFoundException;
+import jakarta.transaction.Transactional;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.PathVariable;
+
+@RequiredArgsConstructor
+@Service
+public class EmpService {
+
+ private final EmpRepository empRepository;
+ private final DeptRepository deptRepository;
+
+ @Transactional
+ public Emp updateEmp(EmpDto updateEmp, Integer empno) {
+ Emp emp = empRepository.findById(empno)
+ .orElseThrow(() -> new EntityNotFoundException("해당 직원의 정보가 존재하지 않습니다."));
+ Dept dept =deptRepository.findById(updateEmp.getDeptno())
+ .orElseThrow(() -> new EntityNotFoundException("해당 부서가 존재하지 않습니다."));
+
+ emp.updateInfo(updateEmp, dept);
+
+ return emp;
+ }
+}
diff --git a/target/classes/app/AppApplication.class b/target/classes/app/AppApplication.class
new file mode 100644
index 0000000..20cb62e
Binary files /dev/null and b/target/classes/app/AppApplication.class differ
diff --git a/target/classes/app/api/controller/DeptAPIController.class b/target/classes/app/api/controller/DeptAPIController.class
new file mode 100644
index 0000000..df187a2
Binary files /dev/null and b/target/classes/app/api/controller/DeptAPIController.class differ
diff --git a/target/classes/app/api/controller/EmpAPIController.class b/target/classes/app/api/controller/EmpAPIController.class
new file mode 100644
index 0000000..0b183ff
Binary files /dev/null and b/target/classes/app/api/controller/EmpAPIController.class differ
diff --git a/target/classes/app/dto/EmpDto.class b/target/classes/app/dto/EmpDto.class
new file mode 100644
index 0000000..4155aa8
Binary files /dev/null and b/target/classes/app/dto/EmpDto.class differ
diff --git a/target/classes/app/entity/Dept.class b/target/classes/app/entity/Dept.class
new file mode 100644
index 0000000..74a161c
Binary files /dev/null and b/target/classes/app/entity/Dept.class differ
diff --git a/target/classes/app/entity/Emp$EmpBuilder.class b/target/classes/app/entity/Emp$EmpBuilder.class
new file mode 100644
index 0000000..326106a
Binary files /dev/null and b/target/classes/app/entity/Emp$EmpBuilder.class differ
diff --git a/target/classes/app/entity/Emp.class b/target/classes/app/entity/Emp.class
new file mode 100644
index 0000000..4fed943
Binary files /dev/null and b/target/classes/app/entity/Emp.class differ
diff --git a/target/classes/app/repository/DeptRepository.class b/target/classes/app/repository/DeptRepository.class
new file mode 100644
index 0000000..d1d38da
Binary files /dev/null and b/target/classes/app/repository/DeptRepository.class differ
diff --git a/target/classes/app/repository/EmpRepository.class b/target/classes/app/repository/EmpRepository.class
new file mode 100644
index 0000000..fe69663
Binary files /dev/null and b/target/classes/app/repository/EmpRepository.class differ
diff --git a/target/classes/app/service/DeptService.class b/target/classes/app/service/DeptService.class
new file mode 100644
index 0000000..f05a220
Binary files /dev/null and b/target/classes/app/service/DeptService.class differ
diff --git a/target/classes/app/service/EmpService.class b/target/classes/app/service/EmpService.class
new file mode 100644
index 0000000..c833f9d
Binary files /dev/null and b/target/classes/app/service/EmpService.class differ
diff --git a/target/test-classes/app/AppApplicationTests.class b/target/test-classes/app/AppApplicationTests.class
new file mode 100644
index 0000000..8000bb3
Binary files /dev/null and b/target/test-classes/app/AppApplicationTests.class differ