전체 글 188

[Javascript] Ajax

Ajax는 Asynchronous Javascript And Xml의 약자로, 비동기적 자바스크립트와 XML을 말한다. HTTP는 기본적으로 클라이언트의 Request와 서버의 Response 이후 연결을 끊도록 설계되었다. 내용을 갱신하려면, Request와 Response를 통해 모든 내용을 다시 가져오게 된다. 이는 자원 낭비, 비효율적이다. Ajax는 전체가 아닌 필요한 부분만 갱신하도록 XMLHttpRequest 객체를 통해 요청한다. JSON이나 XML 형태로 최소한의 필요한 데이터만 받아서 갱신하게 된다. 훨씬 효율적이다. Javascript는 웹 브라우저에서 동작하는 언어로 서버와 통신하는 기능이 없었지만, Ajax를 통해 가능하다. 그대로 사용하려면 코드가 길어지는데, jQuery를 사용..

Anything 2021.04.20

MySQL 외부접속 에러

Ubuntu에 DB 서버 설정 후 외부 클라이언트에서 접속 시 에러 발생 The server time zone value 'KST' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc time zone value if you want to utilize time zone support. MySQL 5.1.X 이후 KST 타임 존을 인식하지 못하는 이슈 해결 : MySQL에 타임존 추가 // /etc/mysql/mysql.conf.d/mysq..

Journal 2021.04.19

[Java Spring] TestRestTemplate

TestRestTemplate는 Spring Boot에서 컨트롤러를 테스트 하기 위해서 사용한다. 기존에 MockMvc도 컨트롤러를 테스트하는 라이브러리인데, 둘의 차이는 서블릿 컨테이너의 실행여부에 있다. MockMvc는 컨테이너를 실행하지 않는다. TestRestTemplate은 컨테이너를 직접 실행시킨다. 그리고 테스트의 관점의 차이가 있다. MockMvc는 서버의 입장에서 구현한 API를 통해 비지니스 로직에 문제가 없는지 테스트하고 TestRestTemplate는 클라이언트 입장에서 사용할 때 문제가 없는지 테스트한다.

Java 2021.04.19

[Java Spring] 빈 생명주기 (Bean Life cycle)

스프링 빈의 생명주기는 스프링 컨테이너 생성 - 빈 객체 생성 - 초기화 - 사용 - 소멸로 이루어진다. 왜 알아야 하는가? DB 커넥션 풀과 같이 애플리케이션의 시작 지점에 특정 작업을 수행하고, 종료 시점에도 작업을 수행해야 하는 경우가 있다. 이때 빈 생명주기를 알고, 각 단계를 활용하면 유용하다. 빈 생명주기 먼저, 스프링 빈은 객체 생성이 이루어지고 의존 관계 주입이 이루어진다. 별도의 초기화 단계가 필요하다. 초기화 3가지 1. @Bean에 initMethod 지정 빈 어노테이션에 initMethod 이름을 옵션으로 부여하고, 메서드를 정의한다. 2. InitializingBean 인터페이스를 통해 afterProperitesSet 메서드를 오버라이드한다. 3. @PostConstruct 어노..

Java 2021.04.16

[DB] 커넥션 풀 (Connection Pool)

DB 커넥션 풀이란 서버와 DB서버 간의 통신 사이에 Pool이라는 공간에 Connection 객체를 두어 관리하는 것. DB 커넥션 풀이 없을 때 JDBC에서 서버와 DB 서버가 통신할 때 순서는 다음과 같다. 1. DriverManager를 통해 Connection 객체를 생성 2. Connection 객체로부터 쿼리를 수행하기 위한 PreparedStatement 객체 생성 3. executeQuery를 수행해 ResultSet 객체를 받아서 데이터를 처리 4. 처리가 완료되면 사용된 리소스 close 하여 반환 DB 서버에 대한 물리적 접근이 많아진다. (사용되는 객체들의 생성과 반환의 반복) 비용과 시간의 문제, 네트워크 부담의 문제가 생긴다. DB 커넥션 풀을 사용하면 이러한 문제를 DB Co..

Anything 2021.04.15

[Java Spring] 트랜잭션 (Transaction)

트랜잭션이란 데이터 베이스 상태를 변환시키는 작업의 단위를 말한다. 데이터베이스 상태를 변환시키는 것은 SQL로 DB에 접근하는 행위를 말한다. 작업의 단위는 개발자가 설계하는 것으로, 하나의 논리적 기능을 수행하기 위한 단위를 말한다. 예를 들어, 게시판에 글을 작성하면 등록된 글이 조회되는 하나의 논리적 기능이 있다고 하면 글을 작성할 때, DB에 INSERT로 데이터를 입력하고, SELECT을 통해 조회하여 사용자에게 출력할 것이다. INSERT부터 SELECT까지 작업의 단위가 되는 것이다. 좋은 개발자는 좋은 트랜잭션 설계가 필요하다. 특징 트랜잭션은 4가지 특징을 갖는다. 1) 원자성 : 트랜잭션이 DB에 반영될 때, 모두 반영되거나 전혀 반영되지 않아야 한다. 부분적으로 반영되면 안된다. 2..

Java 2021.04.14
반응형