728x90

전체 글 331

JPA에서 pageable을 통해 Paging 간단하게 구현하는 법

Paging 구현하기 가장 먼저 Controller API 에서 Pageable 인터페이스 타입으로 파라미터를 받으면 되는데요. Pageable는 어떤 인터페이스인지 내부 메소드를 간단하게 보고 가겠습니다. 인터페이스가 가진 메소드를 보면 여러가지가 있지만 getPageNumber(), getPageSize(), getOffset() 처럼 페이징을 구현할 때 필요한 값들을 편하게 구할 수 있는 메소드들을 추상화 시켜놓은 것을 볼 수 있습니다. 그래서 이제 시도해보려는 방법은 Spring Data JPA에서 메소드 이름으로 쿼리를 만들 때 페이징을 추가하는 법 입니다. 바로 고고싱! Repository 구현하기 public interface PostRepository extends JpaRepository..

JPA 2022.03.22

[마이바티스] @Alias 어노테이션

@Alias는 mybatis에서 지원하는 어노테이션으로 TypeAlias, 즉 별칭을 지정할 때 사용합니다. 이 어노테이션을 사용하기 위해서는 sessionFactory 설정 부분에 다음 코드를 추가해야합니다. sessionFactory.setTypeAliasesPackage("@Alias를 적용할 경로") setTypeAliasesPackage() 메서드를 통해 패키지 경로를 정해두면 패키지 내에 @Alias("별칭") 어노테이션이 지정된 클래스는 매퍼파일에서 별칭으로 해당 클래스를 매핑해줍니다. @Alias("user") public class UserDTO { private Long id; private String name; } 매퍼 파일에서 TypeAlias를 지정하지 않으면 com.user.d..

Spring 2022.03.22

(MySQL) Unique Index로 컬럼에 중복값이 못들어오도록 하려면..

PK 컬럼말고 따로 고유 값을 받아야 하는 컬럼이 있을 때 -> 유니크 인덱스(Unique Index)로 유니크 컬럼을 만들면 된다. 찾아보니 방법은 두가지가 있다. 매 쿼리문에서 방지 - 'where not exists' (비추천) INSERT INTO BOARD_LIKE (BOARD_IDX, USER_IDX) VALUES (11, 13) WHERE NOT EXISTS (SELECT BOARD_LIKE_IDX FROM BOARD_LIKE WHERE BOARD_IDX = 11 AND USER_IDX = 13) 컬럼 속성 설정 (추천하는 방식) 중복되면 안되는 컬럼 조합을 UNIQUE INDEX로 설정한다. UNIQUE INDEX ALTER TABLE BOARD_LIKE ADD UNIQUE INDEX (U..

Database 2022.03.21

(Python 자료형) 딕셔너리의 values, zip, dict 함수 예제

1. (딕셔너리 values() 메서드)다음의 딕셔너리에서 values 값으로만 구성된 리스트를 생성하라. icecream = {'탱크보이': 1200, '폴라포': 1200, '빵빠레': 1800, '월드콘': 1500, '메로나': 1000} 정답확인 -> icecream = {'탱크보이': 1200, '폴라포': 1200, '빵빠레': 1800, '월드콘': 1500, '메로나': 1000} price = list(icecream.values()) print(price) 2. icecream 딕셔너리에서 아이스크림 판매 금액의 총합을 출력하라. icecream = {'탱크보이': 1200, '폴라포': 1200, '빵빠레': 1800, '월드콘': 1500, '메로나': 1000} 출력 예시: 67..

알고리즘 2022.03.20

(Python) 딕셔너리 자료형 예제2

1. 딕셔너리 생성아래의 표에서, 아이스크림 이름을 키값으로, (가격, 재고) 리스트를 딕셔너리의 값으로 저장하라. 딕셔너리의 이름은 inventory로 한다. 이름가격재고 메로나 300 20 비비빅 400 3 죠스바 250 100 정답확인 -> inventory = {"메로나": [300, 20], "비비빅": [400, 3], "죠스바": [250, 100]} print(inventory) 2. inventory 딕셔너리에서 메로나의 가격을 화면에 출력하라. inventory = {"메로나": [300, 20], "비비빅": [400, 3], "죠스바": [250, 100]} 실행 예시: 300 원 정답확인 -> print(inventory["메로나"][0], "원") 3. inventory 딕셔너리..

알고리즘 2022.03.19

[MySql] Cannot delete or update a parent row: a foreign key constraint fails 에러 해결 방법

ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails mysql에서 DB 테이블이나 Row를 삭제하려고 할때 위와 같은 메시지가 발생할 때가 있다. 말그대로 현재 삭제하려고 하는 테이블 또는 행이 다른 곳에서 참조하고 있기 때문에 발생하는 문제다. 이 문제를 해결하는 방법은 아래와 같다. 1. 해당 테이블 또는 행을 참조하는 데이터를 삭제후 삭제를 한다. 가장 안전한 방법이고 초기 DB 설계자의 의도된 대로 데이터의 관계를 유지할 수 있다는 장점이 있다. (이 때, 참조하고 있는 테이블들의 행을 전부 찾아서 삭제 후, 원하는 테이블의 행을 삭제할 수 있으므로 주의하여야 한다.) 2. 외래키 체크 설정..

Database 2022.03.18

(파이썬 자료형)Dictionary 예제

1. (비어있는 딕셔너리)temp 이름의 비어있는 딕셔너리를 만들라. 정답확인 -> temp = { } 2. 다음 아이스크림 이름과 희망 가격을 딕셔너리로 구성하라. 이름희망 가격 메로나 1000 폴라포 1200 빵빠레 1800 정답확인 -> ice = {"메로나": 1000, "폴라포": 1200, "빵빠레": 1800} print(ice) 3. 2번의 딕셔너리에 아래 아이스크림 가격정보를 추가하라. 이름희망 가격 죠스바 1200 월드콘 1500 정답확인 -> ice = {"메로나": 1000, "폴라포": 1200, "빵빠레": 1800} ice["죠스바"] = 1200 ice["월드콘"] = 1500 print(ice) 4. 다음 딕셔너리를 사용하여 메로나 가격을 출력하라. ice = {'메로나':..

알고리즘 2022.03.18

(python)별(*) 표현식 예제 3개

1. (별 표현식)기본적으로 데이터 언패킹은 좌변의 변수와 우변 데이터 개수가 같아야 합니다. 하지만 star expression을 사용하면 변수의 개수가 달라도 데이터 언패킹을 할 수 있습니다. 튜플에 저장된 데이터 중에서 앞에 있는 두 개의 데이터만 필요할 경우 나머지 데이터의 언패킹 코드를 작성할 필요가 없습니다. >> a, b, *c = (0, 1, 2, 3, 4, 5) >> a 0 >> b 1 >> c [2, 3, 4, 5] 다음과 같이 10개의 값이 저장된 scores 리스트가 있을 때, start expression을 사용하여 좌측 8개의 값을 valid_score 변수에 바인딩하여라. scores = [8.8, 8.9, 8.7, 9.2, 9.3, 9.7, 9.9, 9.5, 7.8, 9.4]..

알고리즘 2022.03.17

(Workbench) SSH 터널링으로 DB서버 접속(pem키가 있을 때)

MySQL Workbench에서 SSH 터널링으로 DB 서버 접근 방법 먼저 pem키를 준비해야 한다.(putty에서 생성하거나 회사 인프라팀 등에서 받아야 함) MySQL Workbench 에서 접속 방식을 Standard TCP/IP over SSH 를 선택하고 진행한다(세번째). SSH 터널링 관련 정보 입력 SSH Hostname : 터널링할 SSH 터널 호스트 이름 SSH Username : 터널링할 유저 이름 SSH Password : 터널링할 유저 암호 서버 접속 주소와 유저명 등을 기재 하고 "SSH Key File" 항목에 표기된 개인키를 넣어준다. 접속할 DB 서버 관련 정보 입력 MySQL Hostname : 127.0.0.1 이나 localhost 를 입력 혹은 DB서버 IP MyS..

MySQL 2022.03.16

파이썬 튜플(tuple) 변환

1. 변수 t에는 아래와 같은 값이 저장되어 있다. 변수 t가 ('A', 'b', 'c') 튜플을 가리키도록 수정 하라. t = ('a', 'b', 'c') 정답확인 -> 튜플의 값은 변경할 수 없기 때문에, 리스트와 달리 아래 코드는 동작하지 않습니다. t[0] = 'A' 새로운 튜플을 만들고 t 라는 변수를 업데이트 해야 합니다. 기존의 튜플 ('a', 'b', 'c')은 자동으로 삭제됩니다. t = ('A', 'b', 'c') 2. 다음 튜플을 리스트로 변환하라. interest = ('삼성전자', 'LG전자', 'SK Hynix') 정답확인 -> data = list(interest) 3. 다음 리스트를 튜플로 변경하라. interest = ['삼성전자', 'LG전자', 'SK Hynix'] 정답..

알고리즘 2022.03.16
728x90