Optional Java8부터 Optional 클래스를 사용해 NPE(Null Pointer Exception)을 방지할 수 있다. 만약 null이면 안 되는 어떤 값을 검사해야 할 때, if 문들 사용해서 "null일 때는 어떻게 하고~ null이 아니면 어떻게 하고~"를 일일이 작성해야 하는 불편함이 있었다. Optional 을 사용하면 이 부분의 코드를 간결하게 바꿀 수 있다. Optional 이란? Optional는 null이 올 수 있는 값을 감싸는 Wrapper 클래스이다. Optional로 설정된 값을 참조하더라고 NPE가 발생하지 않도록 도와준다. 즉, 예상치 못한 NPE 예외 발생을 피할 수 있어 권장되는 방법이라고 한다. Optional 객체 생성 of() 또는 ofNullable()을..
데이터베이스 커넥션 획득 과정 1. 애플리케이션에서 DB 드라이버를 통해 커넥션 조회 2. DB 드라이버는 DB와 TCP/IP 커넥션을 연결한다. 3. DB 드라이버는 TCP/IP 커넥션이 연결되면 ID, PW와 기타 정보를 DB에 전달한다. 4. DB는 ID, PW를 통해 내부 인증을 완료하고, 내부에 DB 세션을 생성한다. 5. DB는 커넥션 생성이 완료되었다는 응답을 보낸다. 6. DB 드라이버는 커넥션 객체를 생성해서 클라이언트에 반환한다. 이처럼 커넥션을 생성하는 과정은 복잡하고, 시간이 많이 소모되는 일이다. 또한, 애플리케이션 서버에서도 TCP/IP 커넥션을 새로 생성하기 위해 리소스를 매번 사용해야 한다. 따라서 전반적인 응답속도에 영향을 준다. 이를 해결하기 위해 일정 개수의 커넥션을 미..
이 글에서 설명하는 방법은 현재 직접적으로 사용하는 방법은 아니다. 아래의 과정을 편리하게 라이브러리화 하여 사용한다. 그러나 JAVA의 모든 데이터 접근 기술은 이런 복잡한 과정을 자동화하여 개발자가 이용하기 쉽게 만든 것뿐, 내부에서는 똑같이 동작한다. JDBC 표준 인터페이스 JDBC (Java Database Connectivity ) : 자바에서 데이터베이스에 접근할 수 있도록 하는 자바 API 이다. JDBC는 연결, SQL 전달, 결과 응답의 3가지 기능을 표준 인터페이스로 정의해서 제공한다. Connection : 연결 Statement : SQL 전달 ResultSet : 결과 응답 인터페이스로 제공하는 이유는 여러 가지 DB (MySQL, Oracle 등 ) 마다 조금씩 사용법이 다르기..
SELECT FROM SQL에서 데이터를 조회할 때는 기본적으로 SELECT A FROM B를 사용한다. SQL의 특징 중 하나는 사용하는 구문이 영어 그 자체와 비슷하다는 점이다. SELECT(선택한다) A를 , FROM B (B로부터)라고 해석하면 어느 정도 말이 된다. SELECT CustomerName FROM Customers; 위의 코드는 " 선택한다, CustomerName을, 어디로부터? , Customers 테이블로부터. "라고 해석할 수 있다. 이렇게 간단하면 좋겠지만, 이외에도 WHERE, AS, DISTINCT 등 여러 가지 키워드를 덧붙여서 조금 더 조건에 맞는 데이터를 조회하기 위한 방법들이 있다. 조건을 더하기위해 WHERE을 사용한다. SELECT... FROM... WHER..
HTML 헤더 , 타임리프 사용 설정 - xmlns:th="http://www.thymeleaf.org" 부트스트랩 css파일 상대경로 - th:href="@{/css/bootstrap.min.css}" 태그 : 오류발생시 사용 전체 컨테이너 컨테이너 좌우 너비 최대 1000px로 고정 row, column row 지정 후 그 row 안을 두개의 column으로 지정 왼쪽부터 첫번째 column은 text-start로, 두번째 column은 text-end 로 지정 text-start / text-end / text-center : 해당 태그 내에 들어갈 요소의 위치 지정 py-1 : 해당 태그위 위 아래 여백설정 form의 에 작성한 내용을 아래에 type="submit"을 누르면 PO..
쿠키 로그인 기능이 있는 서비스를 개발하다 보면, 로그인 시 이용할 수 있는 페이지와 그렇지 않은 페이지가 있다. 같은 화면도 로그인 이용자에게 보여줄 화면과 비로그인 이용자에게 보여줄 화면을 다르게 설정해야 할 때도 있다. 이때, 쿠키를 사용해서 로그인 정보를 관리할 수 있다. 서버에서 클라이언트로 loginId가 담긴 쿠키를 전달하고, 클라이언트에서는 그 쿠키를 저장해 뒀다가 HTTP 요청 시 서버로 전달한다. //Cookie 생성자 Cookie idCookie = new Cookie( String name, String value ) //HTTP 응답에 쿠키 담기 response.addCookie( idCookie ); //쿠키 삭제하는 법 idCookie.setMaxAge(0); //..
PRG 패턴 (Post-Redirect-Get) 웹 개발 패턴 중 자주 쓰이는 패턴 중 하나이다. HTTP Post 요청에 대한 응답을 다른 URL로의 GET방식으로 Redirect 하는 것이다. PRG 패턴을 사용하지 않을 때 발생하는 문제 첫 번째로, Post 요청 처리 시 새로고침으로 인해 동일한 요청이 연속적으로 보내지는 오류가 발생할 수 있다. Post 요청을 처리할 때, 변경이 일어나지 않는 로직이라면 상관없지만, Post로 값을 받아 무언가를 변경하는 로직이 있다면 새로고침 했을 때 그 로직이 반복 실행되는 문제가 발생할 수 있다. 두 번째로, Post 요청 처리 후 다른 페이지를 호출하는 경우 해당 페이지를 호출할 때 필요한 파라미터들을 넘겨주지 않아서 문제가 발생할 수 있다. 이런 문제들..