본문 바로가기
반응형

분류 전체보기203

[인프런] 실전! 스프링 데이터 JPA 강의 제목 : 실전! 스프링 데이터 JPA (김영한님) 강의를 듣는 목적 스프링 데이터 JPA의 기본 및 활용과 실무에서의 팁 강의 후기 필자는 스프링 데이터 JPA를 활용하여 간단한 게시판 정도는 만들어보았다. 필자가 기본은 확립되어 있는 것인지 활용을 제대로 하고 있는것 인지 알기 위해서 수강했다. 기본은 사용할 정도만 알고 있었던 것을 정확하게 알고 사용할 수 있을 정도로 설명을 해준다. 또한 실무에서 어떤 식으로 활용을 하는지 왜 안쓰는지 대체재로 어떤 것이 있는지 알려준다. 필자는 이것을 듣고 기초개념을 잡았으며 잘못 사용하고 있었던 것들을 깨닫게 되었다. 상 중 하 가 있을때 이것을 듣고 공부를하면 중까지는 갈 수 있다고 생각한다. 자신이 생각했을 때 개념이 안 잡혀있고 자신의 실력이 중~하 .. 2020. 3. 28.
[Spring] API 설계시 주의사항 Return type을 Entity로 하면 안된다. DTO로 변환을 해서 반환을 해야한다. 이유 1. 내부설계가 노출된다. 2. Entity가 변하게 될경우 API 스펙이 바뀌므로 API를 호출하는측 소스도 바뀌어야한다. 2020. 3. 27.
[Spring] 비밀번호 암호화 실제 서비스에서는 비밀번호와 같이 치명적일 수 있는 데이터는 암호화해서 저장해야한다. 비밀번호를 예제로 암호화에 대해서 알아보도록 하겠다. 생각해야 할 로직은 크게 아래 두 가지로 나눌 수 있다. 1. 가입할 때 비밀번호 암호화 2. 로그인할 때 매칭하는 방법 바로 예제를 보도록 하겠다. 비밀번호 암호화를 도와줄 무언가가 필요하다. 필자는 Spring Security에서 제공해주는 BCryptPasswordEncoder를 사용해서 진행할 것이다. 사용할 BCryptPasswordEncoder를 빈으로 등록을 해준다. 암호화를 할 Class에서 @Autowired를 통해서 주입받는다. 실제 DB에 Insert하는 부분에서 BCryptPasswordEncoder가 제공해주는 encode를 통해서 암호화를 진.. 2020. 3. 27.
[개발자 면접질문] JPA 면접질문 영속상태와 비영속상태의 차이점 영속상태 : 영속성 컨텍스트에 관리되는 상태 비영속상태 : 영속성 컨텍스트에서 관리되지 않는상태 양방향관계일때 외래키를 안만들 수 있는방법 JoinTable을 이용한 방법이 있다. 영속성컨텍스트에 들어가있을때 값을 변경하면 어떠한 일이 발생되는가 값이 변경되고 트랜잭션이 끝날때 update쿼리가 발생된다. fetch 전략이 lazy인것들은 안가져오는데 한번에 가져올 수 있는 방법 fetchJoin()을 사용하는 방법이 있다. querydsl 을 이용한적이 있는가 @EntityGraph 를 사용해본 경험이 있는가 2020. 3. 23.
[개발자 면접질문] Spring Security 관련 면접질문 1. Spring Security를 적용해보았는가 ? 2. Spring Security의 pricipal에는 어떠한 정보들이 담겨있는가 ? 3. Spring Security의 어노테이션들을 사용해보았는가 ? 4. Spring Security의 UserDetails 객체를 상속하여 커스텀객체를 만들어 보았는가 ? 2020. 3. 23.
[H2 Database] Database "C:/Users/choisangyong/datajpa" not found, either pre-create it or allow remote database creation (not recommended in secure environments) 처음 접속할 때 이런식으로 연결을 하면 파일이 만들어지면서 연결이 되어야한다. 하지만 Database "C:/Users/choisangyong/datajpa" not found, either pre-create it or allow remote database creation (not recommended in secure environments) 이런 오류가 발생 할 수 있다. 해결방법 웹사이트와 콘솔에서 실행을 종료후 콘솔에서 ./h2.bat (window 기준) 으로 다시 실행한다. 그렇게한다면 웹사이트가 새롭게 열릴것이다. 새롭게 열린 웹사이트는 어드민권한을 가지고 있으므로 위의 연결을 다시 시도한다면 정상적으로 동작할 것이다. 2020. 3. 23.
[intellij] 자주쓰는 단축키 (WINDOW) WINDOW 기준 Test Class 생성 : 클래스 이름에 두고 알트 + enter 메소드 결과타입생성 : ctrl + alt + v 오버라이드 목록 : ctrl + o 생성자, Getter, Setter 생성 : alt + insert 변수명 일괄 바꾸기 : 쉬프트 + F6 2020. 3. 22.
[인프런] 스프링 부트 개념과 활용 강의 제목 : 스프링 시큐리티스프링 부트 개념과 활용 (백기선님) 강의를 듣는 목적 스프링 부트의 원리이해 강의 후기 다른 백기선님 강의에 비해 초보자가 듣기에 수월하다고 생각하였다. 필자의 목적은 스프링 부트의 원리이해였다. 결론부터 말하자면 필자의 목적이 스프링 부트의 원리이해가 아닌 스프링 프레임워크의 원리이해와 심화학습이라는것을 깨달았다. 필자는 어중간하게 알고있던 개념들을 조금은 구체적으로 잡았으며 공부방향을 잡을 수 있게 되었다. 스프링 부트의 의존성 주입이 어떻게 이루어지는지 jar파일과 war파일 패키징 내장 웹서버의 이해 DB설정과 간단한 사용방법들을 익히고 싶다면 추천하는 강의이다. 하지만 기초개념들은 확실하게 알고 있으며 심화학습이 목적인사람들에게는 추천하지 않는다. 스프링 부트의 의.. 2020. 3. 19.
[javascript] 페이지 첫 요청시 안되는 오류 (두번째부터는 접근될때) 필자는 아래와 같이 페이지이동을 위한 a태그와 function을 하나 만들었다. 그러나 이상한 오류가 발생했다. 첫 요청때는 실패시에나 성공시에 뜨는 alert창이 뜨지도않을뿐더러 아무런 이벤트도 발생하지않았다. (추후에 알고보니 /로 이동했음) 문제점은 어이없게도 a태그의 href에 있었다. 아래부터는 필자의 추측이다. /api/board를 요청했지만 a태그의 기본값이 /이고 /를요청했다. /로 이동을 한 상태기때문에 그 후의 이벤트는 진행되지않았다. 라는것이 필자의추측이다. (정확한 이유를 아시는분은 댓글로 알려주시면 감사하겠습니다) 해결방법은 매우 간단하다. a태그에 href를 없애면된다. 2020. 3. 18.
[Spring]class java.lang.String cannot be cast to class org.springframework.security.core.userdetails.User 필자는 User타입을 쓰다가 UserDetails 타입으로 변환을하였으나 해결방법은 동일하다고 생각하여 글을 남깁니다. Spring Security + JWT를 적용하다가 어이없는 실수였지만 혹시나 필자와같은 실수를 하는분들께 도움이 되고자 글을 남겨본다. 우선 필자는 authenticate에서 Token에 user.getUsername()을 보냈고 Success Handler에서 값을 받아서 사용하려고 하는 도중에 class java.lang.String cannot be cast to class org.springframework.security.core.userdetails.User 이러한 오류가 났다. String타입을 User타입으로 변환하지 못한다는 오류인데 왜 나는지 찾지 못했었다. 원인은 .. 2020. 3. 15.
[개발자 면접질문] 서버개발자 기초 면접질문 JAVA의 main메소드를 작성해보시오. public static void main(String[] args) main메소드에서 public static을 쓰는이유 main 함수가 실행되기 위해서는 메모리에 올라가 있어야하고 어디서나 접근이 가능해야한다. 어디서나 접근이 가능해야 하기때문에 접근제어자는 public으로 설정을 해야한다. static을 빼게되면 메모리에 올라가있지 않으므로 사용할 수 없게된다. 이 개념을 모르겠다면 static 과 접근제어자를 공부하기를 권장한다. 쿠키와 세션의 차이 쿠키는 클라이언트 측에서 관리하고 세션을 서버에서 관리한다. 그렇기 때문에 쿠키를 사용하게 된다면 보안에 취약한 반면 서버의 부하를 줄일 수 있다는 장점이 있다. 세션은 보안에 강력한 반면 서버에서 한 번에 관.. 2020. 3. 5.
[데이터베이스] RDBMS란 ? RDBMS란 ? DB의 레코드들을 삽입 삭제 수정 탐색 할 수 있도록 해주는 소프트웨어 특징 가장 대중적으로 사용되는 DBMS이고 모든 데이터를 2차원 테이블 형태로 표현하는 관계형 데이터 모델에 기초를 둔 DBMS입니다. 테이블-컬럼형태의 데이터 저장방식을 사용하며 각 열은 특정 종류의 데이터를 수록하며 필드는 속성의 실제 값을 저장합니다. 테이블의 행은 한 객체 또는 엔티티와 관련된 값들의 모음을 나타내며 테이블의 각 행은 기본키로 표시할 수 있고 여러 테이블에 있는행들은 외래키를 사용하여 상호 연결될 수 있습니다. 테이블과 테이블간의 연관관계를 이용하여 필요한 정보를 구하는 방식을 사용합니다. E-R모델을 사용하여 모델링을 하며 테이블끼리 중복정보는 최소화 시킵니다. 보안,권한 트랜잭션 관리와 같은.. 2020. 3. 5.