갈래....

회사에서 공부하는데 테이블 CREATE 코드를 보니 UNIQUE INDEX, INDEX 이런 설정 부분들을 이해하기 힘들었고

제법 시간을 들여 검색했는데 결론이 조금 허탈하다... 자동 생성이었어....

 

* PRIMARY KEY : 기본키

테이블에 저장된 각각의 Row에 대한 고유성을 보장한다. 한 테이블에 하나씩만 정의할 수 있으며

PK로 지정된 컬럼에는 NULL값이 입력될 수 없고 자동으로 UNIQUE INDEX가 생성된다.

 

* UNIQUE KEY : 고유키

PRIMARY KEY와 유사하게 테이블에 저장된 각각의 Row에 대한 고유성을 보장하기 위한 제약조건이지만

NULL값이 허용된다. 자동으로 INDEX가 생성된다.

'DB' 카테고리의 다른 글

Oracle과 MySQL 다른 문법 정리  (0) 2023.02.07

1. pom.xml dependency 추가 (어제 복붙한 내용에 이미 들어있었음.)

2.

- security 패키지 생성 -> SecurityConfig 설정 클래스 생성

- @Configuration

- @EnableWebSecurity // 웹 보안 활성화를 위한 어노테이션

- extends WebSecurityConfigurerAdapter -> deprecated 떠서 당황했는데 참고중인 프로젝트는 버전이 낮아서 안뜨는 듯.

 

- 세션 정책

  http

  .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED);

  SessionCreationPolicy.ALWAYS         항상 생성

  SessionCreationPolicy.IF_REQUIRED       (Default) 필요시 생성

  SessionCreationPolicy.NEVER           생성X, 기존에 존재시 사용

  SessionCreationPolicy.STATELESS        생성X, 기존에 존재해도 사용X

 

- csrf().disable()

  CSRF : Cross Site Request Forgery 사이트 간 요청 위조, 사용자가 의도하지 않았지만 사이트를 공격함

 왜 disable? : 뭐가 설명이 몇 개 있긴 하던데 잘 이해는 안간다. 아무튼 안쓰는 이유가 있나봄... 나중에 질문해보자

 

- 그 외에는 일단 그대로 따라서 쳐보다가 원래 공부해야 할 쪽에 치중해야 하는 것 아닌가 싶어 쿼리 보는중... 시큐리티도 나중에 정리를 하긴 할 듯..

'그날그날공부정리' 카테고리의 다른 글

230208 스프링 부트 환경설정  (0) 2023.02.08
230206~230207 공부 내용 정리  (0) 2023.02.07

오전에 MariaDB와 HeidiSQL 설치 및 연동은 금방 처리했는데, 회사에 만들어져 있는 코드 따라서 쳐보려고 생성한 스프링 부트 프로젝트 오류가 산더미였다.

 

~과정~

1. 스프링 부트 2.7.8로 생성했는데 JDK 문제가 일어나서 찾아보니 내 노트북에 설치된 8버전은 지원을 안하는 모양이다.

2. 그래서 JDK17버전을 설치하고 환경변수 설정도 다시 해주었다.

3. 그런데 이클립스에서 JDK 버전이 14인가 15까지만 선택이 되어 당최 무슨 일인가 싶어 찾아보니 내가 사용하는 이클립스 버전이 낮아서 그런가? 하는 생각에 최신 이클립스를 설치했더니 JDK17버전을 사용할 수 있게 되었다.

4. 이제는 잘 되겠지 싶어 메이븐 인스톨 했는데 오류가....ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 검색해도 해결이 안되어서 프로젝트 밀어버리고 새로 생성했더니 해결되었다.

 

결론 : 사전에 호환되는 버전을 확인해서 쓰자.

 

~pom.xml~

1. 설정 날로 먹으려고 회사 프로젝트 pom.xml 복붙하니까 이번에도 버전과 관련된 문제가 발생한 것 같다.

2. mysql 커넥터 jar 파일 추가 및 maven repository에서 최근 버전에 해당하는 dependency 코드 복사해와서 수정

3. 해결 ㅎ_ㅎ

 

~application.yml~

application.properties에서 F2를 눌러 확장자명을 yml로 변경해주면 된다.

spring:

  datasource: ~

    driver-class-name: ~

    url: ~

    username: ~

    password: ~

쭉 적어보는데 빨간줄이 아주 파티를 하더라.... 아니 왜 이래?? 하면서 검색하다보니 yml에선 탭을 쓰면 안되고

<<띄어쓰기 두 번>>이 기준이더라.... 내일은 아예 yml 사용법을 찬찬히 봐야겠음.

 

 

++ 오늘 MySQL 테이블 하나 베껴서 생성해봤고 primary key만 적용된 줄 알았던 칼럼이 unique key도 동시에 설정되어 있던데 내일 좀 더 봐야겠다. DB쪽에 쓰기엔 좀 부실하게 알아봄ㅎ 내일 추가되는 공부 내용이 있다면 글 하나 작성해야지.

'그날그날공부정리' 카테고리의 다른 글

230209 시큐리티  (0) 2023.02.09
230206~230207 공부 내용 정리  (0) 2023.02.07

학원에서는 오라클만 사용했지만 회사에서는 MariaDB도 사용하니까 미리미리 오라클이랑 다른 문법 정리해두기✍

아예 MySQL 문법을 공부할까 싶기도...

 

  MySQL Oracle
INSERT INSERT INTO 테이블이름
SET 컬럼 = #{입력값1}, 컬럼2 = #{입력값2}, ...
INSERT INTO 테이블이름 (컬럼1, 컬럼2, ... )
VALUES (#{입력값1}, #{입력값2}, ...)
현재 날짜시간 NOW() SYSDATE
문자열 합치기 CONCAT('M', 'y', 'SQL') '오'||'라'||'클'
문자열 자르기 SUBSTRING(문자열, 1, 3),
LEFT(문자열, 3), RIGHT(문자열, 3)
SUBSTR(문자열, 1, 3)
공백 치환 함수 IFNULL (컬럼명, 대체값) NVL(컬럼명, 대체값)
형변환 CAST (데이터 AS 변환할 자료형) TO_NUMBER, TO_CHAR 등
날짜 포맷 DATE_FORMAT(NOW(), '%Y%m%d%H%i%s')
// 년도 : 대문자 Y는 4자리, 소문자 y는 2자리
TO_CHAR(SYSDATE,'MMDDYYYYHH24MISS')
날짜 포맷:요일 DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%w')
DATE_FORMAT(NOW(), '%w')
//요일 0
~6 인식
TO_CHAR(SYSDATE - 1, 'D')
// 요일
1~7 인식 (자스 0~6인식해서 -1)
대소문자 구분 구분O 설정에서 변경도 가능 구분X
ROWNUM WHERE절 없이
LIMIT 5, 10
WHERE절에
ROWNUM > 5 AND ROWNUM =< 10

시퀀스 사용 시퀀스명.CURRVAL
SEQUENCE 없음 (23.02.10 수정)
시퀀스명.NEXTVAL
예약어가 컬럼명 컬럼명을 `키(탭 위에 있는 키)로 감쌈 컬럼명을 "로 감쌈
저장 프로시저
유무 파악해서
CREATE하기
DROP PROCEDURE IF EXISTS 프로시저명;
한 뒤에 CREATE PROCEDURE 프로시저명
CREATE OR REPLACE PROCEDURE 프로시저명

 

'DB' 카테고리의 다른 글

[SQL] PRIMARY KEY / UNIQUE KEY 인덱스 자동 생성  (0) 2023.02.10

~ 첫출근날 배운 내용 + 코드 보면서 검색한 내용 + 검색해도 모르겠어서 물어봤던 내용 ~

 

1. Mybatis

- mybatis <where></where> 태그와 where 1=1 둘 다 같은 결과 나올 것. But 같은 결과 나오는지 사용해볼 필요 있음.

- 6일에 배웠던 collection 생각해보니 파이널 프로젝트 때 association 사용했었음 association과 collection의 차이?

    has one(1:1) / has many(1:M)

- resultType은 클래스 자체를 가져와서 참조한다.

- #{} --> PreparedStatement 생성 및 ' 자동 생성되어 쿼리가 수행됨,? 로 받아오고 컴파일
- ${} --> 상수값 그대로 받아옴(보안 취약), ' 자동 생성X

- resultType LowerKeyMap -> 소문자로 자동 변환 해준다.

 

@동적 쿼리 공부 더 필요@

 

2. 스프링 부트

- 메이븐 사용중

- 기본 스프링에서 사용하던 xml 설정 -> yml 설정

- 검색하면 나오는 스프링 부트 사용법에 적혀진 Spring Initializr 사이트 (https://start.spring.io/) 사용하지 않고

  이클립스에서 new 이용해서 Spring boot 프로젝트 생성해도 된다.

- HikariCP

    미리 데이터베이스와 연결시킨 상태를 유지하는 기술을 커넥션 풀(Connection Pool, CP) 이라고 함.

    스프링부트 2.0 이전에는 tomcat-dbcp 사용 -> 2.0 이후에는 HikariCP 사용

    참고로 프로젝트에 쓰던 ojdbc6.jar 이건 오라클 jdbc 드라이버

    부트 기본 옵션이고 다른 것도 多 (특정한 곳에서 as 많이 일어나서 바꿔야 하는 것 아니냐고 하셨던 것 같음)

-  .yml local로 설정해둬도 자동으로 real 변환하도록 되어있음

 

@퇴근 뒤 or 주말 부트로 게시판 만들어보기@

 

3. modelAndView를 쓰지 않고 model/modelMap 사용하는 이유?

- 큰 이유는 없다. 전에 알고있던 modelAndView가 기능이 조금 더 편하고 많다.

  그 정도의 차이고 통일성을 위해 쓰던 대로 쓰는 것이 좋을 것 같다. (중간에 변할 수도 있지만 웬만하면 통일)

- 기억이 안났었는데 검색 결과 model은 인터페이스, modelMap은 클래스이다.

 

4. 어노테이션

- @Scheduled(cron = "초 분 시 일 원 주 (년)")

    @Scheduled(cron = "0 0 0/1 * * *")
      -> 매일 1시간 마다 배치 실행
    @Scheduled(cron = "0 0 4 * * *")
      -> 매일 새벽 4시에 배치 실행

- @ConfigurationProperties : properties, yml 파일 property를 바인딩해 사용할 수 있도록 함.

- @Validated : 유효성 검증

- @Configuration : 설정 파일 만들기 / 빈 등록

 

 

기타

- Authentication 인터페이스 로그인 정보

- 시큐리티 permitAll / 메뉴쪽 interceptor 사용

- DB 도구 중요치X

 

'그날그날공부정리' 카테고리의 다른 글

230209 시큐리티  (0) 2023.02.09
230208 스프링 부트 환경설정  (0) 2023.02.08

+ Recent posts