본문 바로가기
웹 개발/Back End

실전! 스프링 부트와 JPA 활용1 - 웹 계층 개발

by L3m0n S0ju 2022. 1. 9.

 

 

목차

홈 화면과 레이아웃

회원 등록

회원 목록 조회

상품 등록

상품 목록

상품 수정

변경 감지와 병합

상품 주문

주문 목록 검색, 취소

 

 

 


홈 화면과 레이아웃

 

https://github.com/Lemon-soju/Spring-Boot-and-JPA-toddler-practice-01/commit/bf759b64389499b398d2ba490a61a393e2449fa2

 

Merge pull request #15 from Lemon-soju/slave-01 · Lemon-soju/Spring-Boot-and-JPA-toddler-practice-01@bf759b6

Home View And Layout

github.com

 

 

 

 

 

 

 


회원 등록

 

https://github.com/Lemon-soju/Spring-Boot-and-JPA-toddler-practice-01/commit/7d24e19255ac036c4b128c2c807c58a36b04317a

 

Merge pull request #16 from Lemon-soju/slave-01 · Lemon-soju/Spring-Boot-and-JPA-toddler-practice-01@7d24e19

User Registration

github.com

 

배운것

 

1. 실제 Controller에서 넘어오는 Validation과 도메인이 원하는 Validation이 다를 수 있기 때문에 엔티티를 직접 사용하지 말고 폼을 따로 만들어서 사용하는 것이 더 깔끔하다. 엔티티를 직접 사용하는 순간 코드가 더러워지고 화면 기능에 종속적이게 된다.

 

 

 

 

 


회원 목록 조회

 

https://github.com/Lemon-soju/Spring-Boot-and-JPA-toddler-practice-01/commit/300943aa737e71780abe44695afc4b1f47d75586

 

Merge pull request #17 from Lemon-soju/slave-01 · Lemon-soju/Spring-Boot-and-JPA-toddler-practice-01@300943a

User List Lookup

github.com

 

 

 

 

 


상품 등록

 

https://github.com/Lemon-soju/Spring-Boot-and-JPA-toddler-practice-01/commit/81e4d7cfb07f87933dea700aae8a7fa46fc0a9ce

 

Merge pull request #18 from Lemon-soju/slave-01 · Lemon-soju/Spring-Boot-and-JPA-toddler-practice-01@81e4d7c

Item Registration

github.com

 

 

 

 

 

 


상품 목록

 

https://github.com/Lemon-soju/Spring-Boot-and-JPA-toddler-practice-01/commit/aaee62816f502387e54e31086c1ac3613a83d502

 

Merge pull request #19 from Lemon-soju/slave-01 · Lemon-soju/Spring-Boot-and-JPA-toddler-practice-01@aaee628

Item List

github.com

 

 

 

 

 

 

 


상품 수정

 

https://github.com/Lemon-soju/Spring-Boot-and-JPA-toddler-practice-01/commit/a9ad86ed17b2c698221b740cac076dda00d63da9

 

Merge pull request #20 from Lemon-soju/slave-01 · Lemon-soju/Spring-Boot-and-JPA-toddler-practice-01@a9ad86e

Item Modification

github.com

 

 

 

 

 


 

변경 감지와 병합(merge)

 

https://github.com/Lemon-soju/Spring-Boot-and-JPA-toddler-practice-01/commit/ef33b6d1bd470395f7803fdb879de549daa3b2e4

 

Merge pull request #21 from Lemon-soju/slave-01 · Lemon-soju/Spring-Boot-and-JPA-toddler-practice-01@ef33b6d

Change Detection And Merge

github.com

 

 

 

 

배운 것

 

1. 데이터베이스에 한번 갔다와서 식별자가 있으면 준영속 엔티티라고 한다. 준영속 엔티티는 영속성 컨텍스트가 더는 관리하지 않는 엔티티를 말한다. 문제점은 JPA가 관리하는 영속 엔티티는 Commit이나 flush 할 때 Dirty Checking을 통해 변경된 부분을 자동으로 업데이트해주지만 준영속 엔티티는 그렇지 못한다.

 

방법 1.

-> 영속성 컨텍스트에서 엔티티를 다시 조회한 후에 데이터를 수정하는 방법 -> 영속성 컨텍스트에 다시 엔티티가 들어가므로 Dirty Checking을 통해 변경을 감지할 수 있다. 병합 보다 더 좋은 방법이다.

 

방법 2.

-> 병합 방법 1을 자동으로 해줌

-> 주의점 !!! -> 값이 없으면 null로 업데이트되므로 데이터가 사라질 수 있으므로 사용하지 않는 것이 좋다. 그리고 원하는 속성값만 변경하고 싶어도 merge를 사용하면 모든 속성값을 변경해야 한다.

 

결론 -> merge는 그냥 사용하지 말자.

 

 

 

 


상품 주문

 

https://github.com/Lemon-soju/Spring-Boot-and-JPA-toddler-practice-01/commit/ca3f0c9279b2ae0bee8b84de4120cad0240a93a7

 

Merge pull request #22 from Lemon-soju/slave-01 · Lemon-soju/Spring-Boot-and-JPA-toddler-practice-01@ca3f0c9

Item Order

github.com

 

 

 

 

 

 


주문 목록 검색, 취소

 

https://github.com/Lemon-soju/Spring-Boot-and-JPA-toddler-practice-01/commit/4c94a3e727dedf25736afe1964f4f8f6582b96cf

 

Merge pull request #23 from Lemon-soju/slave-01 · Lemon-soju/Spring-Boot-and-JPA-toddler-practice-01@4c94a3e

Order List Search and Cancel

github.com

 

 

 

 

 

댓글