- Today
- Total
목록Category (320)
개발하는 고라니
MySQL에서 사용자 계정을 생성하는 방법이나 각 계정의 권한을 설정하는 방법은 다른 DBMS와는 조금 다르다. 대표적으로 MySQL의 사용자 계정은 단순히 사용자의 ID뿐 아니라 사용자가 어느 IP에서 접속하고 있는지도 체크한다. 또한 MySQL 8.0 부터 권한을 묶어 관리하는 Role 개념이 도입되었기 때문에 각 사용자의 권한으로 미리 준비된 권한 세트를 부여하는 것도 가능하다. 계정의 식별 방식 권한 역할 위 세 가지에 대해 반드시 숙지하자. 식별 MySQL의 사용자는 ID와 클라이언트가 실행된 호스트명이나, 도메인 또는 IP 주소도 계정의 일부가 된다. 따라서 ID와 호스트를 함께 명시해야 하며, ID와 호스트를 감싸는 역따옴표(₩)는 종종 작은 따옴표(')로 사용하기도 한다. 'gorany1'..

MySQL 설치 [environment] Mac OS (M1) mysql (latest) linux/amd64 Docker가 이미 설치되어 있다는 가정하에 진행해본다. $ docker run -p 3306:3306 \ --platform linux/amd64 \ --name mysql-db \ -e MYSQL_ROOT_PASSWORD=[password] \ -e MYSQL_DATABASE=[database] \ -e MYSQL_USER=[username] \ -e MYSQL_PASSWORD=[password] \ -d mysql MySQL 컨테이너가 실행된 것을 확인하고 컨테이너에 들어가보자. $ docker ps -a $ docker exec -it mysql-db [MySQL 실행 파일 위치 및 설정..
Servicee 나 Repository에 대해 테스트 코드를 짜는 것은 조금은 익숙하나, Controller 레이어를 구성하고 테스트 하기 위해서는 Postman이나 Web UI 테스트를 진행해왔다. 이번에는 어플리케이션 수준에서 Controller 테스트를 하는 방법을 간단하게 알아보고자 한다. Environment - Junit 5 - Spring Boot 2.1.7 - JPA (Hibernate) Controller Test * Service, Repository, DTO 및 Entity에 대한 코드는 따로 명시하진 않는다. Controller에 대해 테스트를 하려면 Mock이라는 개념이 필요한데, 이에 대해서는 다음에 자세히 알아보도록 하고, 이번에는 어떻게 사용하는지만 알아보자. package ..

Querydsl Querydsl은 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해주는 프레임워크이다. 또한 Querydsl은 JPQL 빌더이다. 현재 JPA를 JPQL -> Spring Data JPA -> Querydsl순으로 배우고 있다. Querydsl은 무엇이고 왜 쓰이는지, 어떻게 쓰는지 JPQL과 비교하며 알아본다. JPQL을 사용하다보면 한계에 부딪힐 때가 있다. 1) 복잡한 쿼리 - JPQL에서 복잡한 쿼리를 타이핑 중 오타가 날 수도 있고, 가독성이 떨어질 수 있다. - JPQL에서 파라미터를 .setParameter(name, value)를 통해 바인딩해야한다. - Querydsl에서 java 코드를 사용하기 때문에 컴파일 시점에 타입 체크나 오타를 잡아주어 IDE의 도..
21년 10월 말, 27살의 마무리를 준비할 쯤 첫 취준 기간이 끝났다. 전자공학을 전공했고, 1학년 때 C 언어의 벽을 느끼며 코딩은 못하겠다라고 생각했었고, 이후로도 못했다. 어영부영 지내다 군복무를 하고 돌아와서 공부를 열심히 해봐야겠다고 다짐하고 학교 공부에만 매진했다. 그거면 되는 줄 알았으나, 절대 그렇지 않았다. 모든 것을 새로 공부해야했고, 어디서부터 어떻게 시작해야할지 막막했다. 이를 느꼈을 때가 대학교 4학년 1학기였다. 당시는 개발이 뭔지도 몰랐고, 할 줄 아는 것은 자바,,,C,,,자료구조 정도였다. 개발이 하고 싶어서 유튜브와 책을 뒤지며 내가 무엇을 해야하는지 찾아다녔고, 뉴렉쳐라는 유튜브를 접하게 되었다. 이때 굉장히 도움이 많이 되었다. 나름 공부를 하고 지냈고, 막학기에는 ..

저번 달부터 프로그래머스에서 진행한 월코챌 시즌3. 총 8문제중 4문제 이상 풀면 이벤트에 응모할 수 있었다. 가까스로 4문제를 풀고 늘 그렇듯 별 기대없이 이벤트에 응모했다. 며칠뒤 뜻밖의 이메일이 한통 날아왔다. 평소 프로그래머스의 굿즈가 탐났었고 굿즈를 희망했는데 해피해킹2 ?? 처음 듣는 거였다. 그래서 당첨이 됬음에도 아쉬운 마음이 있었으나, 찾아보니 키보드였고, 그 중에서도 무접점 키보드였던 것이다. 근데 가격이 너무나도 사악했다. 이런 키보드를 내가 당첨되다니 나에게 과분한 키보드라고 생각했다. 그래도 기대되는 마음은 감출 수 없었다. 태어나서 처음으로 무언가에 당첨되었다는 사실에 그렇게 오늘 키보드를 받았는데 해피해킹 프로2와 달리 해피해킹 하이브리드 타입-s 라는 모델을 받았다. 이 제품..
Transaction 트랜잭션이란 여러 쿼리를 하나의 업무단위로 묶는 것이다. START TRANSACTION; SELECT * FROM users WHERE id = '1'; UPDATE users SET NAME = 'first' WHERE id = '1'; SELECT * FROM users WHERE id = '1'; COMMIT; Transaction의 성질 트랜잭션의 성질은 흔히 ACID라고 말한다. Atomicity(원자성) : 트랜잭션의 결과는 100% 모두 반영되거나 반영되지 않아야 한다. Consistency(일관성) : 트랜잭션의 결과는 일관성 있어야하고, 데이터베이스는 트랜잭션의 결과를 반영한 후에도 일관적이어야 한다. 여기서 일관적이란 데이터의 타입 등이 바뀌지 않는 것이다. Is..

JPA를 사용함으로써 단순 반복하는 CRUD의 SQL 작성을 획기적으로 줄일 수 있었다. 예를 들어, 테이블을 만들 때마다 Insert 쿼리, Select 쿼리, Update 쿼리, Delete 쿼리 1개씩은 대게 기본으로 SQL을 짜던 것을 JPA에서는 메서드로 가능하게 해주었다. 하지만 인간의 욕심은 끝이없다던가,, 이 간단한 CRUD 작업을 메서드로 하는 것 마저 반복을 줄일 수 없을까 고민을 하게되고, 처음에 이를 해결한 오픈소스 프로젝트를 Spring 측에서 함께 만들어 출시한 것이 Spring Data 프로젝트의 Spring Data JPA이다. 즉, Spring Data JPA를 사용한다면 간단한 저장/삭제/조회 메서드는 기본으로 장착이 되어있고, 커스터마이징 하는 것 또한 더 간편하게 할 ..