본문 바로가기
반응형

전체 글1065

[소경관] : Session으로 logout 구현하기 로그아웃 일단 테스트용 버튼을 만들어줬다. 디자인을 넣지 않은 상태이나 일단 기능은 구현하느라 만들어 두었다. /** * 로그아웃 기능 구현하기 */ @PostMapping("/logout") public String logout(HttpServletRequest request) { HttpSession session = request.getSession(false); if (session != null) { session.invalidate(); } return "redirect:/user/logIn"; } 로그아웃 기능이다. 간단히 Session 정보를 가져와 null인지 체크하고 null이 아닐 경우 즉, Session에 값이 있는 경우 session.invalidate();를 실행하도록 해주었다... 2022. 4. 17.
[소경관] : Session 적용하기 public interface SessionConst { String LOGIN_MEMBER = "userDTO"; } Session을 다룰 때 글자만 참고해서 사용하기 위해서 상수를 인터페이스로 만들어주었다. 이렇게 만든 상수는 직접 사용은 하지 않는다. /** *로그인 로직 처리 */ //TODO: 2022-04-17아이디 비밀번호 체크 로직 필요, Session값 넘기는 로직 필요,예외 처리 필요 @PostMapping("/user/logIn/page") public String login(@ModelAttribute UserVo userVo, HttpServletRequest request) throws Exception { log.info(this.getClass().getName() + "로그.. 2022. 4. 17.
[TIL] : 172 일일 배움을 위한 Today I Learned ! Kotlin 천천히 코틀린 공부를 시작했다. 공식 문서를 참고해 천천히 볼 예정이다. 2022.04.16 - [프로그래밍언어/Kotlin] - [Kotlin] : Hello World부터 when까지 공식 문서 참고해서 공부하기 소경관 피드백 받은 곳을 체크해 보고 이제 해야 할 기능을 어떻게 사용해야 할 지 찾아보고 있다. 코드는 적용하고 다시 롤백 해 둔 상태이다. 스터디 오늘 스터디 참석률은 저조했다. 2022.04.16 - [발전소/동아리 및 스터디] - [코딩 스터디 2기] : 7주차 2022. 4. 16.
[코딩 스터디 2기] : 7주차 오늘은 스터디에 나랑 동기인 쌤 밖에 없었다. 각자 사정이 있으셔서 오늘 참석률은 좋지 못 했지만 다음주는 다시 같이 하게 될 것 같다. 오늘 스터디 전에 어제 구현한 기능에 대해 피드백을 받고 체크해 봤다. 지금 만들고 있는 프로젝트도 이제 어떤 기능을 구현해야 할지 체크해 보고 발표와 리뷰는 두 명이서 진행했다. 2022. 4. 16.
[Kotlin] : Hello World부터 when까지 공식 문서 참고해서 공부하기 fun main() { println("Hello World!") } Kotlin은 main()부터 시작된다. fun main() { val items = listOf("사과", "바나나", "키위") println("items에 있는 값 => " + items) for (item in items) { println("내가 먹고 싶은 과일은 " + item + "입니다.") } } items에 있는 값 => [사과, 바나나, 키위] 내가 먹고 싶은 과일은 사과입니다. 내가 먹고 싶은 과일은 바나나입니다. 내가 먹고 싶은 과일은 키위입니다. list에 값을 담고 for문으로 출력할 수 있다. fun main() { val items = listOf("사과", "바나나", "키위") println("item.. 2022. 4. 16.
[TIL] : 171 일일 배움을 위한 Today I Learned ! 소경관 오늘 로그인 기능을 구현했다. 아직 검증 부분과 실패 시 메시지 체크는 구현하지 못 했지만 로그인 기능 자체 구현은 성공했다. 처음 사용해 보고 처음 배우는 기술로 하다 보니 시간이 오래 걸렸다. 2022.04.15 - [Project/소경관] - [소경관] : thymeleaf와 JPA, builder 패턴을 사용하여 로그인 구현하기 2022. 4. 15.
[소경관] : thymeleaf와 JPA, builder 패턴을 사용하여 로그인 구현하기 @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(name = "USER_INFO") @ToString public class UserEntity { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE) private Long userNo; @Column(name = "USER_NAME", length = 20) private String userName; @Column(name = "USER_PN", length = 40) private String userPn; @NotNull @Column(name = "USER_EMAIL", length = 200) private Str.. 2022. 4. 15.
[TIL] : 170 일일 배움을 위한 Today I Learned ! 소경관 요즘 하루 종일 프로젝트만 만지고 있다. 배운 기술을 사용하기 보다는 내가 따로 공부한 기술을 다시 복습 하면서 적용해 가고 있다. 때문에 모르는 내용이 많기도 하고 자주 막히기도 하지만 계속 찾아보고 해결하다 보니 점점 발전하고 있는 것 같다. 2022.04.14 - [Project/소경관] - [소경관] : JPA와 builder 패턴을 사용한 회원 가입 및 Id, Email 중복 체크 로직 코딩하기 2022. 4. 14.
[소경관] : JPA와 builder 패턴을 사용한 회원 가입 및 Id, Email 중복 체크 로직 코딩하기 📌 검증 기능은 아직 구현하지 못 했기 때문에 회원 가입과 ID, Email 중복 체크를 중점으로 보면 된다. @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(name = "USER_INFO") @ToString public class UserEntity { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE) private Long userNo; @Column(name = "USER_NAME", length = 20) private String userName; @Column(name = "USER_PN", length = 40) private String userPn; @.. 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] : 168 일일 배움을 위한 Today I Learned ! 소경관 며칠 헤매던 Builder 패턴을 적용했다. 뭔가 자꾸 하면서 곧 잡힐 듯 말 듯한 느낌을 받았는데 실제로 살짝 수정을 통해 정상적으로 기능을 되돌릴 수 있었다. 이제는 유효성 체크를 위해 검증 로직을 도입해볼까 하는데.. 막막하다. 분명 김영한님 강의에서 열심히 했는데 막상 혼자 해보려니 느낌이 또 다르다. 2022.04.12 - [Project/소경관] - [소경관] : @Entity를 @Setter없이 View에서 Controller로 값을 받아와 @Builder를 통해 DB에 넣기 2022. 4. 12.
[소경관] : @Entity를 @Setter없이 View에서 Controller로 값을 받아와 @Builder를 통해 DB에 넣기 Entity를 Setter없이 View에서 Controller로 값 받아와 @Builder를 통해DB에 넣기 며칠 헤매다 드디어 성공했다. 내가 너무 어렵게 생각하고 있었다. View에서 값을 받아 Controller에 넘겨주고 Controller에서 View에서 받아 온 값을 Entity에 담아 Service에 넘긴다. Service는 받은 값을 JpaRepository를 상속 받은 interface UserRepository에 저장한다. @Builder를 사용해 View에서 값을 받아 DB에 저장하기 매개 변수가 더 있지만 몇 가지로 간추려 작성해 본다. @PostMapping("/user/regUser/insert") public String InsertRegUser(HttpServletReques.. 2022. 4. 12.
[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.
[TIL] : 166 일일 배움을 위한 Today I Learned ! 소경관 하고 있던 JPA 사용법을 간단하게 찾아보고 적용하고 있다. 오늘은 길게 공부를 안 하고 짧게 체크하고 넘어간다. 2022.04.10 - [Project/소경관] - [소경관] : 새벽에 공부한 내용 체크와 리프레쉬 2022. 4. 10.
[소경관] : 새벽에 공부한 내용 체크와 리프레쉬 헷갈리는 것 회원가입을 위해 필요한 템플릿이 총 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.
반응형