본문 바로가기
반응형

JPA27

[TIL] : 224 일일 배움을 위한 Today I Learned ! 소경관 임시 비밀번호를 생성하고 이메일로 쏴주는 로직을 구현했다. 많이 사용해 본 적이 없는 기술을 활용하려고 하다 보니 여러 자료를 찾아가며 했지만 그래도 오늘도 수확이 있어서 다행이라 생각한다. 2022.06.07 - [Project/소경관] - [소경관] : 비밀번호 찾기 구현하기 2022. 6. 7.
[TIL] : 219 일일 배움을 위한 Today I Learned ! 소경관 요즘에는 하루 종일 프로젝트만 하고 있다. 이것 저것 코딩하고, 삭제하고, 수정하고 정리가 안 된 코드들이 많아 전부 다 올리진 못 하지만 간단하게 체크해 볼 수 있는 부분은 정리해서 올리고 있다. 2022.06.02 - [Project/소경관] - [소경관] : 회원가입과 로그인 로직 수정하기 msa msa 프로젝트를 위해 git에서 이슈관리를 연습하고 있다. 마일스톤과 이슈를 잘 사용하는 방법에 대해 연습하면서 git flow 프레임워크를 사용하는 방법에 대해서도 익혀볼 예정이다. 2022. 6. 2.
[TIL] : 170 일일 배움을 위한 Today I Learned ! 소경관 요즘 하루 종일 프로젝트만 만지고 있다. 배운 기술을 사용하기 보다는 내가 따로 공부한 기술을 다시 복습 하면서 적용해 가고 있다. 때문에 모르는 내용이 많기도 하고 자주 막히기도 하지만 계속 찾아보고 해결하다 보니 점점 발전하고 있는 것 같다. 2022.04.14 - [Project/소경관] - [소경관] : JPA와 builder 패턴을 사용한 회원 가입 및 Id, Email 중복 체크 로직 코딩하기 2022. 4. 14.
[TIL] : 169 일일 배움을 위한 Today I Learned ! 소경관 builder를 어떻게 사용할 수 있을지 더 찾아보고 있다. 2022.04.13 - [Project/소경관] - [소경관] : builder에 값을 넣는 다른 방법 JPA JPA 지식이 많이 부족해서 일단 공부를 해야할 것 같다. 회원가입, 로그인, 수정, 삭제 등 기본 CRUD 로직은 다룰 수 있게 만들어야겠다. 2022.04.13 - [Data Base/JPA] - [JPA] : 일대다, 1:N 2022.04.13 - [Data Base/JPA] - [JPA] : 일대일, 1:1 2022. 4. 13.
[JPA] : 일대일, 1:1 1 : 1은 반대도 일대일이다. 외래키를 둘 중 한 곳에만 넣으면 된다. 외래키에 데이터베이스 유니크 제약조건을 추가를 해야한다. 일대일 관계는 간단하게 구현할 수 있다. @Entity public class Locker { @Id @GeneratedValue private Long id; private String name; } Locker에 간단하게 id와 name를 만들어준다. @Entity public class Member { @OneToOne @JoinColumn(name = "LOCKER_ID") private Locker locker; } Member에서 @OneToOne를 통해 Locker를 1대1 매핑한다. @JoinColumn 어노테이션 정도는 사용해 줘야 깔끔하게 정리가 된다. 여기.. 2022. 4. 13.
[JPA] : 일대다, 1:N 일대다는 추천하지 않지만 일대다 양방향 매핑은 사용해도 좋다. 일대다 양방향 매핑은 공식적으로 존재하지 않지만 아래와 같이 사용할 수 있다. @ManyToOne @JoinColumn(name = "TEAM_ID", insertable = false, updatable = false) private Team team; insert와 update를 하지 않는다는 뜻으로 읽기 전용 필드를 생성한다. 이 읽기 전용 필드를 통해 앙방향 처럼 사용할 수 있다. 결국, 테이블 매핑은 단순해야 한다. 항상 유의하자. 기출로 대비하는 개발자 전공면접 [CS 완전정복] 을 참고해서 공부하였습니다. 2022. 4. 13.
[소경관] : builder에 값을 넣는 다른 방법 이것 저것 테스트를 해 보고 있다. Builder에 request.getParameter를 통해 값을 담았는데 View에서 th:object를 통해 값을 받아온 DTO에서 꺼내어 담아도 값이 들어간다. 이름 A name is required. th:object="${userSaveForm}" userSaveForm으로 값을 받는다. @PostMapping("/user/regUser/insert") public String InsertRegUser(@Validated Model model, HttpServletRequest request, UserSaveForm userSaveForm, UserSaveForm을 파라미터로 받는다. log.info("DTO 값을 Entity에 넣기 = {}", UserEnt.. 2022. 4. 13.
[TIL] : 167 일일 배움을 위한 Today I Learned ! 소경관 JPA 활용법에 슬슬 익숙해지고 있다. 처음에 강의를 들으면서 프로젝트를 하기 시작해서 뭔가 내 프로젝트에서 JPA를 쓰는 부분이 적다고 판단해 따로 공부해서 적용하려 했으나 역시 기초 베이스가 없으니 다른 글을 봐도 알아보기가 어렵다. 천천히 수확을 내고 있고 아무래도 JPA강의를 먼저 빠르게 들어봐야겠다. 2022.04.11 - [Project/소경관] - [소경관] : 지옥의 Builder JPA JPA를 공부했다. 프로젝트에 적용하다 부족하다 생각해서 강의를 마저 듣고 있다. 2022.04.11 - [Data Base/JPA] - [JPA] : 다대일, N:1 2022. 4. 11.
[JPA] : 다대일, N:1 연관관계 매핑 시 고려사항 다중성 단방향, 양방향 연관관계 주인 다중성 데이터베이스 관점으로 고려하자. 다대일 @ManyToOne 일대다 @OneToMany 일대일 @OneToOne 다대다 @ManyToMany 애매할 땐 반대로도 체크해 보면 된다. 대칭성 이용 다대일 반대는 일대다.. 등등 다대다는 사용하면 안 된다. 단방향, 양방향 테이블 외래키 하나로 양쪽 조인이 가능하다. 방향 개념이 없다. 객체 참조용 필드가 있는 쪽으로만 참조가 가능 한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향 단방향이 두 개라고 보면 된다. 연관관계 주인 테이블은 외래키 하나로 두 테이블이 연관관계를 맺는다. 연관관계의 주인은 외래키를 관리하는 참조이다. 주인의 반대편은 외래키에 영향을 주지 않고 단순 조회만 가능하다.. 2022. 4. 11.
[소경관] : 지옥의 Builder Entity와 DTO를 아직 해결하지 못 했다. 사실 Entity에 Setter를 박아버리면.. 이렇게 고민 할 필요도 없지만 지금은 탐구하면서 하고 있기에 머리가 아프다. 일단 데이터 쿼리문을 날리는 것 까지는 성공했다. 그럼 어디가 문제? Entity와 DTO를 modelMapper를 통해 변환을 해야 하는지 builder로 dto를 세팅하던지 반대로 dto에서 Entity를 세팅하던지.. 위 것들을 고민하고 있다. 그 외, 일단 위에 문제를 선택하거나 고치지 못 한 상태라 값을 전달하지 못 하고 있다. 시퀸스 값은 정상적으로 올라가는데 데이터에 null이 들어가고 있다. 위에서 DTO와 Entity를 어떻게 잘 섞어 쓸지 해결하면 문제가 없을 것 같은데 일단 강의를 빨리 더 들어야 하는지 잘 모르겠.. 2022. 4. 11.
[소경관] : 새벽에 공부한 내용 체크와 리프레쉬 헷갈리는 것 회원가입을 위해 필요한 템플릿이 총 2개? 화면을 띄워주는 경로 로직 처리하는 경로?.. Mapper 대신 Repository? @Autowired 대신에 @RequiredArgsConstructor 사용?.. @PostMapping("/regUser") public String regUser() throws Exception{ UserDTO userDTO = null; userDTO.setUserId("userName"); userDTO.setUserPn("userPn"); userDTO.setUserEmail("userEmail"); userDTO.setUserId("userId"); userDTO.setUserPw("userPw"); userDTO.setUserAddr("userAddr.. 2022. 4. 10.
[TIL] : 165 일일 배움을 위한 Today I Learned ! CS 지식 어제 공부한 Hash table에서 생기는 충돌에 대한 공부를 마저 진행했다. 2022.04.09 - [노트/CS 노트] - [CS 노트] : Hash table에서 Collistion 해결하기 JPA JPA 연관관계를 공부한 것을 이제 전에 만들던 프로젝트에 적용해서 다시 사용해 봤다. 2022.04.09 - [Data Base/JPA] - [JPA] : 연관관계 매핑 시작하기 프로젝트 JPA를 공부하면서 적용하려니 어려운 부분이 확실히 있다. 공부 후 적용을 했어야 하는데 욕심인가 싶지만 그래도 최대한 빨리 체크해 완성해야겠다. 아마 조만간 프로젝트에 신경을 많이 써야하지 않을까 싶다. 2022.04.09 - [Project/소경관] - [.. 2022. 4. 9.
[소경관] : 프로젝트에 적용하기 위해 JPA Builder, Entity 사용 공부 중 회원가입 로직을 짜려고 했는데 시작부터 바로 막혔다. JPA를 사용해 본 적이 없기도 하고 Entity를 사용해 본 적이 없기도 해서 막혔다. 오늘 스터디부터 쭉 찾아보면서 알아낸 것을 간단히 정리해 본다. 지금까지 캐치한 것 JPA를 처음 사용해 보면서 DTO대신 Entity를 사용했는데 Entity 사용법이 어렵다. 먼저, Entity는 일관성을 보장하기 위해 Setter를 사용하면 안 된다. 때문에 따로 생성자를 만들거나 Builder를 사용해야 한다. 또, Entity를 DTO로 매핑하여 사용하는 방법도 있는 것 같다. Builder를 만들 수 있지만 @Builder 어노테이션을 활용해 쉽게 만들 수도 있는 것 같다. 문제 캐치한 것에 대한 확신이 없다. 왜? → 구현을 해 본 적이 없어서. 나는.. 2022. 4. 9.
[TIL] : 164 일일 배움을 위한 Today I Learned ! 소경관 간단하게 프로젝트 중 DTO와 Entity를 분리하고 생성자를 하나 만들어줬다. 2022.04.08 - [Project/소경관] - [소경관] : 프로젝트 패키지 구조 고민 및 Entity와 DTO의 분리 인터뷰 간단한 인터뷰를 진행했다. 나는 발표를 진짜 너무 못 했다. 목소리도 너무 떨리고 긴장도 심하게 되었다. 그래도 스터디에서 간단한 발표를 매주 하면서 발전이 있었나, 온라인이라 힘이 생긴건가 그래도 엄청 떨거나..(목소리가 자동 바이브레이션 되는 경우..) 엄청 긴장(눈이 검해진다..피가 쏠린다..)하진 않았다. 중간에 숨이 빨라져 좀 떨리긴 했는데 그래도 애써 침착해 숨을 내쉬면서 떨림을 멈추려고 노력했다. 생각 정리 머릿속이 복잡해서 .. 2022. 4. 8.
[JPA] : 양방향 연관관계와 연관관계의 주인(Owner)에 대한 주의점 양방향 매핑 시 가장 많이 하는 실수 //저장 Member member = new Member(); member.setUsername("member1"); em.persist(member); Team team = new Team(); team.setName("TeamA"); team.getMembers().add(member); em.persist(team); em.flush(); em.clear(); tx.commit(); 이렇게 코드를 바꾸고 실행을 해 본다. TEAM_ID가 null이 뜬다. //저장 Team team = new Team(); team.setName("TeamA"); //team.getMembers().add(member); // 2022. 4. 8.
[TIL] : 162 일일 배움을 위한 Today I Learned ! JPA 프로젝트에 사용을 위해 기본 매핑을 연습하고 연관관계 매핑을 연습했다. 조인을 간단하게 할 수 있어서 놀랐다. 2022.04.06 - [Data Base/JPA] - [JPA] : 기본 매핑하기 2022.04.06 - [Data Base/JPA] - [JPA] : 연관관계 매핑 기초 R 고수준 그래프 함수를 간단하게 사용해 봤다. 이 외에도 여러 함수를 사용할 수 있었는데 그래프 체크만 하고 넘어갔다. 2022.04.06 - [프로그래밍언어/R] - [R] : 고수준 그래프 함수 CS 노트 이진 탐색 트리에 대해서 알아봤다. 이진 탐색 트리의 worst case를 해결하는 방법은 다음에 다뤄주는 것 같다. 2022.04.06 - [노트/CS 노트].. 2022. 4. 6.
[JPA] : 연관관계 매핑 기초 좀 더 연관관계를 맺어서 객체지향적으로 설계를 할 지에 대해 공부한다. 기본 매핑 같이 1대1로 매핑하는 것은 쉽고 이것은 객체가 지향하는 패러다임과 관계형이 지향하는 패러다임 이 사이에서 무언가를 잘 찾아야 하는 어려움이 있다. 방향, 다중성, 연관관계의 주인 연관관계의 주인이 어렵다. 책 추천 (조영호) 객체지향의 사실과 오해 오브젝트 Team team = new Team(); team.setName("TeamA"); em.persist(team); Member member = new Member(); member.setUsername("member1"); member.setTeamId(team.getId()); em.persist(member); 외래키 식별자를 직접 다뤄 데이터를 넣을 수 있다. .. 2022. 4. 6.
[JPA] : 기본 매핑하기 @Id @GeneratedValue @Column(name = "ITEM_ID") private Long id; 컬럼명을 따로 정해줄 수 있다. @Entity @Table(name = "ORDERS") // order가 예약어로 걸려있는 경우가 있따. // order by 때문에 그래서 orders라고 쓴다. public class Order { @Id @GeneratedValue @Column(name = "ORDER_ID") private Long id; @Column(name = "MEMBER_ID") private Long memberId; 테이블 이름도 지정해 줄 수 있는데 ORDER가 ORDER BY 예약어로 걸려있는 경우가 있어서 ORDERS로 주로 사용한다. 다른 컬럼도 이름을 걸어줄 수 .. 2022. 4. 6.
[TIL] : 161 일일 배움을 위한 Today I Learned ! JPA 프로젝트에서 JPA를 사용하려고 하기 때문에 미리 연습해 놓고 있다. 빨리 기초를 익히고 바로 프로젝트에 적용해야 한다. 2022.04.05 - [Data Base/JPA] - [JPA] : 데이터베이스 스키마 자동 생성하기 2022.04.05 - [Data Base/JPA] - [JPA] : 필드와 컬럼 매핑 2022.04.05 - [Data Base/JPA] - [JPA] : 기본 키 매핑 오류노트 오늘도 오류 하나 정리해 봤다. 2022.04.05 - [노트/오류 노트] - [오류 노트] : Command failed with error 48 (NamespaceExists): 'Collection already exists. Spring Bo.. 2022. 4. 5.
[JPA] : 기본 키 매핑 키본 키를 매핑하는 방법은 직접 할당과 자동 생성이 있다. 직접 할당은 @Id를 사용하면 된다. 자동 생성은 @GeneratedValue 를 사용하면 된다. 옵션 AUTO : 방언에 따라 자동 지정, 요즘엔 또 다를 수도 있어서 보고 사용해야 한다. IDENTITY : 데이터베이스 위임. MYSQL 기본키 생성을 데이터베이스에 위임한다. SEQUENCE : 데이터베이스 시퀸스 오브젝트 사용, ORACLE TABLE : 키 생성용 테이블 사용, 모든 DB에서 사용한다. @SequenceGenerator @Entity //JPA가 관리하는 객체고 데이터베이스 테이블과 매핑해서 사용하는구나! 하고 알면 된다. //@Table(name = "MBR") //데이터베이스 MBR 테이블이랑 매핑된다. 즉, 매핑 할 .. 2022. 4. 5.
[JPA] : 데이터베이스 스키마 자동 생성하기 위 코드를 추가하면 데이터베이스 스키마가 자동으로 생성된다. value 부분에 여러 옵션을 사용할 수 있다. create는 기존 테이블을 삭제 후에 다시 생성하고, drop 후 create create-drop은 create와 같으나 종료 시점에서 drop하고, 테스트 케이스를 실행하고 마지막에 깔끔하게 할 때 주로 사용한다. update는 변경분만 반영하고(운영 DB에는 사용하면 안 된다.) validate는 엔터티와 테이블이 정상 매핑되었는지 확인하고 none는 사용하지 않는다. 사실 none는 없는 키워드인데 관례상 쓰는 것이다. 막 써넣는 것과 별 다른 게 없다. 운영 장비에는 절대로 create create-drop update를 사용하면 안 된다고 한다. 테스트한 데이터가 다 날라가버려서 그렇.. 2022. 4. 5.
반응형