728x90

Database 14

[JPA] JPA의 다양한 연관관계 매핑

연관관계참조 다대일(@ManyToOne) [단방향, 양방향] 일대다(@OneToMany) [단방향, 양방향] 일대일(@OneToOne) [주 테이블 단방향, 양방향], [대상 테이블 양방향] 다대다(@ManyToMany) [단방향, 양방향] 다대일(@ManyToOne) - 단방향 member -> team @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private String username; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; .... } @Entity public class Team { @Id @Genera..

Database 2023.01.19

[Querydsl] 동적 정렬 sort를 위한 OrderSpecifier 클래스

querydsl을 사용하면서 페이징 처리 및 검색기능 추가하고 있었다. 정렬 기능까지 추가하면서, 이것을 동적으로 처리 할 수는 없나? 라는 생각에 OrderSpecifier이라는 클래스를 알게되어 잠깐 기록을 남겨본다. 참고로 정적으로 정렬을 처리하기 위해선 ex) orderBy(user.userId.asc()) 이런식으로 처리를 할 수 있다. 하지만 이렇게 정적으로 박아두면 불편하지 않겠는가? Sort에 대한 부분을 설정해놨다면, 정렬에 대한 부분을 동적으로 활용하고 싶었다. pageRequest에 페이징 처리가 되어있고, sort에 관한 정보를 가져오려고 했으나, getSort()를 읽지 못했다. 인자를 검색보니 OrderSpecifier 이라는 녀석을 이용해줘야하는걸 알아냈음. 명세서를 살펴보니,..

Database 2023.01.19

[SQL] 계층형 쿼리(Hierarchical Query)란?

SQLD를 공부할때, 읽는것만으로 이해가 잘 안되서 계층형 쿼리에 대해 한 번 알아보고자 한다. 계층형 쿼리란 테이블에 계층형 데이터가 존재하는 경우 이를 조회하기 위한 쿼리이다. 먼저 계층형 데이터란? 동일 테이블에 계층적으로 상위와 하위 데이터가 포함된 데이터를 말한다. 예시로 하드웨어 계층적 구조를 살펴보면, 중앙처리장치와 기억장치, 입력장치의 상위 데이터는 하드웨어이며, 하드웨어의 하위 데이터는 중앙처리장치, 기억장치, 입출력장치 3개이다. ex) 테이블로 나타냈을때 예시 장치이름 상위장치 1 하드웨어 null 2 중앙처리장치 하드웨어 3 기억장치 하드웨어 4 입출력장치 하드웨어 5 입력장치 입출력장치 6 출력장치 입출력장치 계층의 쿼리의 형태를 살펴보자. START WITH 조건 CONNECT ..

Database 2022.01.22

[SQL] DDL, DML, DCL, TCL 구별

SQL 및 DB를 하는데 있어서 가장 기본적인 DDL DML DCL TCLㅣ을 알아보기 종류 명령어 설명 데이터 조작어 (DML : Data Maniputation) SELECT 데이터베이스에 들어있는 데이터를 조회하거나 검색하기 위한 명령어 INSERT UPDATE DELETE 데이터베이스의 테이블에 있는 데이터의 변형을 할 수 있는 명령어 (데이터 삽입, 수정, 삭제 등) 데이터 정의어 (DDL : Data Definition Language) CREATE ALTER DROP TRUNCATE 테이블과 같은 데이터 구조를 정의하는데 사용하는 명령어 (생성, 변경, 삭제 등) 데이터 제어어 (DCL : Data Control Language) GRANT REVOKE 데이터베이스에 접근하고 객체들을 사용 ..

Database 2021.10.15

[MySQL] Varchar 형태 Date로 변환

데이터베이스를 이용하다가 날짜의 형태를 String으로 저장한적이 있었다. 범위가 길어지다보니 String보다 Date 타입으로 변환해서 사용하는게 좋을것 같아서 Varchar형에서 Date로 변환하는법을 알아보고자 한다. 생각보다 아주 간단하다. UPDATE table_name SET table_col = STR_TO_DATE(table_col, '%Y-%m-%d') 형태로 해결하면 된다. STR_TO_DATE를 사용하면 된다는 말씀! 여기서 date 필드값을 다르게 변경해줘야 할때가 있는데 예 시 적 용 2021-09-21 %Y-%m-%d 21-9-21 %y-%m-%d Sep 21 2021 %M %d, %Y 해당 테이블을 참고해서 적용하면 된다. 보통은 %Y-%m-%d를 많이 사용하는듯!

Database 2021.09.29

[PostgreSQL] DB 및 유저 생성

postgresql 사용에 앞서 Database와 유저를 생성하고 pgAdmin4를 통해 외부 네트워크에서 접속을 시도. 1. DATABASE 생성 이제 외부 접속을 허용했으니 사용할 DB를 생성. 다음 명령어를 통해 Postgresql Shell을 실행. $ sudo su postgres $ psql 이제 사용할 DB를 생성. CREATE DATABASE smoh; 2. USER 생성 그다음 유저를 생성하고 권한을 부여. 개발용 계정으로 사용할 예정이기 때문에 SUPAERUSER 권한을 줬습니다. CREATE USER {user_name} WITH PASSWORD '{user_password}'; ALTER USER {user_name} WITH SUPERUSER; 만약 해당 유저에게 특정 권한만 주고..

Database 2021.07.27

[DB] mysql Access dinied for user "@" (using password:YES)

DB를 Connect하는 경우 나타날 수있는 Error. 로그인이 불가하다는 내용인데, 검색해보니 주요 문제는 다음과 같다고한다. 1. 외부접속을 열어주지 않은 경우 2. 비밀번호를 설정하지 않은 경우 3. 비밀번호를 제대로 설정하지 않은 경우 비밀번호 같은 경우에는 초기에 대부분은 설정을 해주기 때문에 보통은 외부접속을 허용하지 않아서 발생되는 오류인것로 생각된다. 외부접속을 허용해주기 위해선 grant all privileges on *.* to '계정명'@'%'; 를 설정해주면 된다. % 의 경우에는 들어오는 모든 아이피를 수신하는것이기때문에 특정 아이피를 지정하기 위해선 이부분을 입력해주면 된다.

Database 2021.07.27

[MariaDB] 시퀀스 초기화 및 재정렬

개발을 하다보면 DB에 연동을 하게되고, 흔히 말하는 CRUD를 구현하게 된다. 예를들어 게시판 기능을 만들경우 게시판 번호의 기능을 추가하면 저절로 Count가 되는것이 있는법. 그래서 Test 중에 이것저것 넣다보면 게시판 번호의 시퀀스의 값이 점점 쌓이고 쌓여 꽤나 많게된다. 그동안 쌓여온것을 모두 DELETE해도 1부터 시작되는것이 아니라 지원값의 그 다음 숫자부터 적용이 되서 그래서 간간히 SQL를 통해 정리해주는 작업을 한 번정도 하는것 같아서 간단히 메모. SET @CNT = 0; UPDATE 테이블명 SET 테이블명.컬럼이름 = @CNT:=CNT+1; 이렇게하면 MariaDB & MySQL에 적용된 AUTO_INCREMENT가 적용된 컬럼값을 재정렬 할 수 있게된다. 데이트를 정리하기전에 ..

Database 2021.05.28
728x90