Spring AOP 쉽게 이해하기 | 그리고 간단한 예제코드
·
JAVA/Application
AOP aspect-oriented programming concern을 분리하여 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임이다. wiki에 보면 "횡단 관심사(cross-cutting concern)의 분리를 허용"한다고 되어있다. 부가적인 기능(관심사)을 따로 모듈화하므로 OOP를 더욱 강화하는 방식이라고 볼 수 있다. "흩어진 관심사를 Aspect로 모듈화한다"고 기억해두면 스프링 AOP를 이해하기 편하다! ∨ 프로그래밍 패러다임? 프로그래밍을 어떤 관점으로 바라보고 인식할 것이냐(=패러다임)를 말한다. 프로그래밍 패러다임은 크게 명령형/선언형으로 분류한다. 그중 OOP는 명령형 프로그래밍 패러다임에 속한다. OOP를 더욱 OOP스럽게 만드는 것이 AOP이다. + 프로그래밍 패러다임? 더보..
post 요청 후 406 Not Acceptable 해결 - Dto에 Getter 붙이기
·
JAVA/Application
post 요청 결과를 json으로 받아오지 못했다. 원인 : Response Dto 클래스에 Getter를 작성하지 않았다. json response를 위해서는 Dto에 Getter가 필요함을 새로 알았다. @Getter를 붙여서 바로 해결되었다. 관련 글 : https://velog.io/@rmswjdtn/Spring-Response-Request-DTO-%EA%BD%89%EC%9E%A1%EA%B8%B0 [Spring] Jackson : Response, Request DTO 꽉잡기 최근 프로젝트를 하면서 당연하게 사용하던 DTO 매핑이 어떻게 일어나는지 궁금해졌고, DTO에 붙여주는 여러가지 롬북 어노테이션들.. 이중에 정말 필요한 것만 내가 쓰고있는가?라는 의문이 생 velog.io 위 링크에서 배..
Docker Container Mysql 접속하기
·
미분류글
docker로 띄운 mysql에 접속하여 존재하는 database들을 확인해보고자 했다. (docker container는 존재하는 상태임) 컨테이너 시작 docker start containerName 컨테이너 접속 docker exec -it containerName bash 참고 : -it는 Interactive Terminal Mode를 뜻한다. ★ mysql 관리자로 접속 mysql -u root -p 그럼 아래와 같이 mysql Password 입력 후에 접속이 완료된다. Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 19 Server version: 8.0.3..
JdbcTemplate | 왜 Jdbc 'Template'인가? 내부 동작 간단히 살펴보기
·
JAVA/Application
+ 배경지식 https://splendidlolli.tistory.com/561 [JDBC] DB Connection을 얻어서 query 실행 | DriverManager과 DataSource를 통하여 (+ Connection Pool 개념)JDBC JDBC는 Java에서 DB에 접속할 수 있게 하는 API이다. JDK에 포함되어있다. Persistence Layer(즉 DB와 연결하는 부분)을 위해 존재한 최초의 Component가 JDBC이다. 즉 JDBC는 역사가 깊은 API다. JDBC driver Java에splendidlolli.tistory.comJava에서 DB와 연결되기 위해서는 Jdbc api를 거쳐야 한다. 개발자는 Jdbc api를 사용하여 DB에 접근(query 보내기 등)할 수 ..
[JDBC] DB Connection을 얻어서 query 실행 | DriverManager과 DataSource를 통하여 (+ Connection Pool 개념)
·
JAVA
JDBC JDBC는 Java에서 DB에 접속할 수 있게 하는 API이다. JDK에 포함되어있다. Persistence Layer(즉 DB와 연결하는 부분)을 위해 존재한 최초의 Component가 JDBC이다. 즉 JDBC는 역사가 깊은 API다. JDBC driver Java에서 DB를 사용하려면 JDBC 드라이버가 있어야 한다. JDBC 인터페이스를 각 DBMS에 적절하게 구현한 것이 JDBC 드라이버이다. JDBC 드라이버는 자신이 사용할 DBMS에 맞춰 다운로드 받으면 된다. 백엔드 개발자는 DB 종류와 상관없이 JDBC API를 사용해서 DB와 연결한다. 아래 그림을 보면 개발자는 JDBC api를 사용하여 db에 접근하도록 되어있다. DB와 연결 ─> Connection을 얻는다 JDBC ap..
mysql 서버 상태 확인하기(show status) | db connection 전후 Threads 관련 상태변수 확인
·
Database
mysql 데이터베이스 서버 상태 확인하기 데이터베이스의 환경변수값, 상태변수값을 조회하여 서버의 상황을 체크할 수 있다. ■ 환경변수 조회 : show variables └> 환경변수값을 조정해서 mysql의 상태 제어 가능 ■ 상태변수 조회 : show status └> 상태변수값을 통해 mysql의 각종 상태(동작정보)를 확인 가능 ■ 환경변수 조회 show variables 쿼리 결과이다. 각종 환경변수 값을 확인할 수 있다. ■ 상태변수 조회 show status 쿼리 결과이다. 각종 상태변수 값을 확인할 수 있다. Thread 관련 상태변수 값 확인해보기 db서버의 thread 관련 상태변수 값을 확인해보자. show status like '%Threads%'; 나는 지금 DB connecti..
docker 기본 사용법 - 명령어
·
미분류글
docker 기본 사용법 ex) ubuntu를 컨테이너에 띄울 거고, 컨테이너 이름은 ubuntu1로 지정할 것임 도커 이미지 검색 (ex : ubuntu 이미지) docker search ubuntu 이미지 다운로드 (ex : ubuntu 이미지) docker pull ubuntu 이미지 리스트 출력 docker images 컨테이너 생성 (ex : name은 ubuntu1로 지정) docker run -it --name=ubuntu1 ubuntu 컨테이너 접속 docker exec -it ubuntu1 bash 컨테이너 접속하지 않고 실행만 한 뒤 결과출력 docker exec ubuntu1 ls 컨테이너 탈출 (컨테이너를 정지하지 않고 나오기) ctrl + P + Q 도커 컨테이너 리스트 확인 do..
빌드 실패 해결 - Gradle JVM의 sdk 설정 필요 | A problem occurred configuring root project 'demo'. | Could not resolve all files for configuration ':classpath'. | Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.0.1.
·
미분류글
문제상황 clone해온 프로젝트의 Sync 과정에서 아래와 같은 문제 발생! 로그 일부 ↓ A problem occurred configuring root project 'demo'. > Could not resolve all files for configuration ':classpath'. > Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.0.1. Required by: project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.0.1 > No matching variant of org.springframework.boot:spring-boo..
[DB] 상속 관계 매핑 전략 선택하기
·
Database
다음과 같은 논리적 상속관계를 DB상에 물리적으로 어떻게 나타내야하는지 고민했다. 조인테이블 전략을 사용하였다. (장단점은 맨 아래에 요약) 참고) Join Table 전략 : 여러 테이블 사용 - 관리해야 할 테이블이 많아짐 - 객체지향스럽지 않고 복잡함 => Single Table 전략을 현업에서 좀 더 많이 사용하기도 함 Join 전략으로 매핑하면 다음과 같이 superclass와 subclass의 table이 구성된다. Springboot를 통해 상속관계 DB매핑 적용하기 super class ▶ 참고: @DiscriminatorColumn 지정은 상속관계매핑의 JoinTable 전략에서 필수가 아니다. (본인도 필요가 없어져서 나중에 없앰) 참고로, 하나의 테이블로 상속관계가 매핑되는 Singl..
ObjectInputStream | file에 이어쓰기로 writeObject 후 readObject하려할 때 object를 못읽는 문제
·
Database
문제 상황: 내 프로그램은 파일(storage.ser)에다가 object를 동적으로 write/read하는 프로그램이다. 첫번째 실행에서 os.writeObject()로 어떤 파일(.ser)에 동적으로 writeObject() 여러번 하고 readObject()했을 때는 아무 문제가 없었다. 그런데 프로그램 종료후 다시 실행한 두번째 실행에서 해당 파일에 이어서 wirteObject()하고 다시 readObject하는 상황에서, 이어서 writeObject()한 부분은 전혀 읽어오지 못했다. 그냥 단순하게 이런 코드들을 사용한 건데 왜 문제가 생겼을까? os = new ObjectOutputStream(new FileOutputStream(fileName, true)); os.writeObject(v);..