반응형 전체 글179 spring-data-envers로 데이터 변경 이력(히스토리)을 관리해보자! Spring Boot + JPA로 상품 주문 프로세스 주제로 사이드 프로젝트를 하고 있었습니다. 이때 상품 주문에 대한 히스토리를 어떻게 관리해야 할지 고민을 했었습니다. 첫 번째 방법으로 직접 주문 히스토리 테이블을 설계하여 상품 주문, 취소 등등... 데이터가 변경될 때 하나하나 직접 테이블에 넣어주는 방식으로 설계하다 보니 정확한 시점에 못 넣는 일이 발생하고 사람이 코드로 직접 넣는 거다 보니 데이터에 적합성도 떨어졌습니다. 또한, 똑같은 코드가 반복해서 들어가는 보일러 플레이트 코드가 생산되는 단점이 있었습니다. 찾아보다가 spring-data-envers라는 데이터 변경을 쉽게 관리할수있도록 도와주는 것이 있다고 하여 학습하여 적용시켰습니다. https://github.com/hygl/spri.. 2022. 9. 4. [지구최강 JPA 스터디] 6-7주차 연관관계 매핑 4가지와 단방향, 양방향! 사실 테이블에서 방향이라는 개념은 따로 있지 않고 설계의 편의를 위해 적용 테이블이 한쪽만 참조하면 단방향이고, 테이블이 양쪽에서 참조하면 양방향입니다. 양방향에서 연관관계 주인이 중요합니다. 양방향 매핑에서 연관관계 주인은 외래 키를 관리하는 곳 연관관계 주인의 반대편은 외래키에 영향을 주지 않습니다. 단순 조회 가능 단방향은 연관관계 주인이라는 개념이 따로 없습니다. JPA에서 연관관계 매핑 방식이 4가지가 있습니다. 다대일 : @ManyToOne 외래 키가 있는 쪽이 연관관계 주인입니다. 다대일에서도 단방향과 양방향을 설계할 수 있습니다. 축구선수와 팀의 테이블을 설계해야 한다면 축구선수 테이블이 @ManyToOne입니다.(연관관계 주인은 축구선수 테이블) = [단방향] 축구선수 여러 명은 하나의 .. 2022. 8. 14. [지구최강 JPA 스터디] 4-5주차 객체 설계 할때는 단방향으로!? 양방향일 때 연관관계의 주인을 누구로 지정해야 할까? 객체의 두 관계 중 하나를 연관관계의 주인으로 지정해야 합니다. 연관관계의 주인만 외래 키를 관리(등록, 수정)가 가능합니다. 주인이 아닌 경우 읽기만 가능합니다. 주인 -> mappedBy 사용 x 주인이 아닌경우 -> mapppedBy 속성으로 주인을 지정 비즈니스 로직을 기준으로 연관관계의 주인을 선택하면 안 됩니다. 연관관계의 주인은 외래 키의 위치를 기준으로 정해야 합니다. Member와 Order Entity가 있다고 가정해봅니다. 양방향으로 매핑했다고 생각하고 연관관계주인을 설정한다면, 외래키가 Order 기준으로 있으므로 이 두 개의 객체의 연관관계 주인은 Order로 설정해야 합니다. @ManyToOne은 항상 연관관계의 주인(Mapp.. 2022. 7. 28. [지구최강 JPA 스터디] 2-3주차 몰아서 정리하자! 데이터베이스 스키마 설정은 개발 초기 단계 아니면 validate 나 none으로 해줘야 합니다.(create, create-drop, update는 테스트할 때만!) gradle이면 이런 식으로 세팅하고 #application.yml spring: jpa: hibernate: ddl-auto: validate OR none maven이면 아래와 같은 방식으로 세팅해줍니다. 자주 사용하는 매핑 어노테이션 정리 @Column(name = "name") private String username; @Column은 DB의 컬럼과 매핑해주는 어노테이션입니다. @Enumerated(EnumType.STRING) private RoleType roleType; @Enumerated는 자바의 enum타입과 매핑해주는.. 2022. 7. 13. 120. Triangle (DP, DFS로 풀어보자!) https://leetcode.com/problems/triangle/ Triangle - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제: Given a triangle array, return the minimum path sum from top to bottom. For each step, you may move to an adjacent number of the row below. More formally, if you are on index i on.. 2022. 7. 3. Java11 람다식에서 VAR를 사용할 수 있다고? 나만 몰랐던 건가.... Var 타입은 JavaScript에서 사용하는 방식입니다. (var만 보면 발작 버튼이.... 부들부들... 최대한 JS var는 지양해야 합니다.) https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var var - JavaScript | MDN The var statement declares a function-scoped or globally-scoped variable, optionally initializing it to a value. developer.mozilla.org 이 var 형식을 Java11에서 어떻게 사용할 수 있을까? 정확히는 Java10에 도입되었네요. 간단하게 v.. 2022. 7. 2. [지구최강 JPA 스터디] 1주차 영속성 컨텍스트란? 회사에서 동기들과 JPA를 함께 스터디를 하기로 했습니다. https://www.inflearn.com/course/ORM-JPA-Basic/ 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 회사가 인프런 강의를 지원해줘서 위에 강의를 베이스로 스터디를 진행했습니다. 1주차 정리 EntityManagerFactory가 EntityManager를 만들어줍니다. EntityManager를 통해서 영속성 컨텍스트에 접근합니다. 스프링 프레임워크 같은 컨테이너 .. 2022. 6. 30. 내가보려고 정리한 JPA OSIV(Open EntityManager In View) OSIV는 Open EntityManager In Viewd의 약자입니다. spring.jpa.open-in-view는 기본적으로 True로 되어있습니다. OSIV은 Appleication 실행 중 어느 시점에 세팅되는지 확인해보겠습니다. 위에 로그를 잘 보면 Appleication이 실행이 되고 톰켓이 켜진다음 빈 주입을 쭉 실행해줍니다. 다음으로 테이블을 만들어줍니다. 만들어주는이유는 application.yml에 jpa: hibernate: ddl-auto: create create로 설정했기 때문에 실행 시점에 테이블을 만들어줍니다. 테이블 설정이 마무리되었다면 마지막으로 JpaBaseConfiguration$JpaWebConfiguration에서 spring.jpa.open-in-view is .. 2022. 6. 22. [Spring] @RequestBody는 객체로 받자! PUT으로 해당 JSON 객체 요청이 들어온다고 가정해봅시다. PUT {URL/~} content-type: application/json { "phoneNumber": "010-0000-0000", "name": "김아무개", "age": 28 } Body에 핸드폰 번호, 이름, 나이의 정보를 받습니다. 이때! Map을 사용하지 말고 객체를 생성해서 만들어줍시다. /** * 사용자 승인 * @param req * @return */ @PutMapping("/~") public Object approvalFrom(@RequestBody Map req){ ... } 이런 식으로 하면 문제점이 무엇일까요? Map으로 리퀘스트를 처리할 경우 어떤 값이 넘어오는지 알 수 없고, 관리하기가 다소 어렵습니다. 정확.. 2022. 5. 30. 이전 1 2 3 4 5 6 ··· 20 다음 반응형