본문 바로가기

Java

(27)
Java 불변 객체와 final 1. 불변 객체(Immutable Object) 및 final을 사용하는 이유 불변 객체란 객체 생성 이후 내부의 상태가 변하지 않는 객체이다. 불변 객체는 read-only메소드만을 제공하며, 객체의 내부 상태를 제공하는 메소드를 제공하지 않거나 방어적 복사(defensive-copy)를 통해 제공한다. Java의 대표적 불변객체는 String String은 불변 클래스이기 때문에 String 내부의 char형 배열을 얻어 수정하여도 반영이 되지 않는다. Java에서는 배열이나 객체 등의 참조를 전달한다. 그렇기 때문에 참조를 통해 값을 수정하면 내부의 상태가 변하기 때문에 내부를 복사하여 전달하고 있는데, 이를 방어적 복사(defensive-copy)라고 한다. String의 toCharArray 예..
Java Optional이란? 예외처리 https://happy-seyoung.tistory.com/entry/Java-11-Exception%EC%B2%98%EB%A6%AC Java 11 Exception처리 Exception 프로그램 오류 프로그램 수행 시 치명적 상황이 발생하여 비정상 종료 상황이 발생한 것, 프로그램 에러라고도 함 오류의 종류 컴파일 에러 : 프로그램의 실행을 막는 소스 상의 문법 에 happy-seyoung.tistory.com 1. Optional이란? [ NPE이란? ] 개발을 할 때 가장 많이 발생하는 예외 중 하나인 NPE(NullPointException)이다. NPE를 피하려면 null여부를 검사해야한다. 하지만 null 검사를 해야하는 변수가 많으면 코드가 복잡해진다. 그래서 null대신 초기값을..
Java Stack Trace란? 스택 트레이스란? 스택 트레이스는 프로그램이 시작된 시점부터 현재 위치까지의 메서드 호출 목록을 의미한다. 스택 트레이스는 예외가 발생할 경우 JVM이 어디서 예외가 발생했는지 알려주는 역할을 한다. 우리가 흔히 보는 NPE 발생시 로그에 찍히는 스택 트레이스이다. 스택 트레이스를 볼 줄 알아야 하는 이유 다른 사람이 만든 소스 코드여도 문제가 발생시 코드 전체를 처음부터 분석하지 않더라도 스택트레이스를 잘 읽을 줄 만 안다면 해당 코드의 문제 원인을 분석할 수 있다. 스택 트레이스를 분석하는 능력은 실무에서 중요하면서도 개발자의 필수 역량이다. 참조: https://okky.kr/articles/338405
try-with-resources 사용법 try-with-resources란? try-with-resources를 하기전에 try-catch-finally로 자원을 반납하는 경우를 먼저 알아야 한다. 두 가지를 모두 비교해야 왜 try-with-resouces를 사용해야 하는지 이해가 되기 때문이다. Java 7이전의 try-catch-finally 사용 후에 반납해주어야 하는 자원들을 Cloable 인터페이스를 구현하고 있으며, 사용 후에 close 메소드를 호출 해주어야 한다. 단점 자원 반납에 의해 코드가 복잡해짐 작업의 번거로움 실수로인한 자원 미반납 에러로 인한 자원 미반납 디버깅의 어려움 Java 7부터의 try-with-resouces 자원 자동 반납 기능인 try-with-resouces문법 추가 AutoCloseable 인터페이..
MyBatis 동적 SQL ▶ MyBatis 동적 SQL 일반적으로 검색 기능이나 다중 입력 처리 등을 수행해야 할 경우SQL을 실행하는 DAO를 여러 번 호출하거나 batch기능을 이용하여버퍼에 담아 한 번에 실행시키는 방식으로 쿼리 구현MyBatis에서는 이를 동적으로 제어할 수 있는 구문을 제공하여 좀 더 쉽게쿼리를 구현할 수 있도록 기능 지원 지원 구문 종류 1. if 2. choosee (when, otherwise) 3. trim (where, set) 4. foreach if 구문 동적 쿼리를 구현할 때 가장 기본적으로 사용되는 구문으로특정 조건을 만족할 경우 안의 구문을 쿼리에 포함 시킴 다중 if 구문 필요로 하는 조건이 1개 이상일 시 if구문을 여러 개 사용 가능 choose, when, otherwise 구문..
Mybatis SELECT / Map 활용 SELECT문 활용하기 index.jsp DB에 저장된 데이터 조회하기 SELECT문 사용하기 SELECT문으로 가져온 데이터를 DTO객체에 저장시켜서 반환 mybatis : select문의 결과를 지정한 객체에 저장해서 반환 저장된 학생수 조회 학생수 조회 학생번호로 조회 저장된 전체 학생 조회하기 전체학생 조회 이름으로 학생 조회하기 저장된 학생수 조회와 맵핑되있는 서블렛 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int result=new StudentService().selectStudentCount(); request.setAtt..
Mybatis ▶ MyBatis 데이터의 입력, 조회, 수정, 삭제(CRUD)를 보다 편하게 하기 위해 xml로구조화한 Mapper설정파일을 통해 JDBC를 구현한 영속성 프레임 워크기존 JDBC를 통해 구현했던 상당 부분의 코드와 파라미터 설정 및결과 매핑을 xml설정을 통해 쉽게 구현할 수 있게 함 ▶ MyBatis 흐름 이전 JDBC Template을 통해 SQL을 실행하였다면 MyBatis는 해당 흐름을 전용 라이브러리를 통해 대체하여 동작 ▶ MyBatis 동작 구조 ▶ MyBatis 내장 별칭 Mybatis 타입 Java 자료형 Mybatis타입 Java 자료형 _byte byte double Double _long long float Float _short short boolean Boolean _int ..
EL/JSTL 1. JSP Action Tag XML기술을 이용하여 기존의 JSP문법을 확장하는 매커니즘을 제공하는 태그웹 브라우저에서 실행되는 것이 아니라 웹 컨테이너에서 실행되고결과만 브라우저로 보낸다 표준 액션태그 커스텀 액션 태그 사용법 JSP페이지에서 바로 사용 태그 앞에 jsp접두어가 붙음 별도의 라이브러리 설치 필요라이브러리 선언에 맞는 접두어가 붙음 사용 예시
Java 13-2 컬렉션 List 자료들을 순차적으로 나열한 자료구조로 인덱스로 관리되며 중복해서 객체 저장 가능 Linked List List의 후손으로, 인접 참조를 링크해 체인처럼 관리 특정 인덱스에서 객체를 제거하거나 추가하게 되면 바로 앞 / 뒤 링크만 변경하면 되기 때문에 객체 삭제와 삽입이 빈번하게 일어나는 곳에서는 ArrayList보다 성능이 좋음 public static void linkedListTest() { //LinkedList클래스 이용하기 //List인터페이스를 구현한 클래스 //사용방법 ArrayList와 동일 LinkedList ll=new LinkedList(); ll.add("홍길동"); ll.add("까치"); ll.add("까마귀"); System.out.println(ll); System...
Java 13-1 컬렉션 컬렉션(Collection) 메모리상에서 자료를 구조적으로 처리하는 방법을 자료구조라 일컫는데 컬렉션(Collection)은 자바에서 제공하는 자료구조를 담당하는 프레임워크 추가,삭제,정렬 등의 기능처리가 간단하게 해결 되어 자료구조적 알고리즘을 구현할 필요 없음 java.util 패키지에 포함되며, 인터페이스를 통해 정형화된 방법으로 다양한 컬렉션 클래스 이용 가능 자료구조 데이터(자료)를 메모리에서 구조적으로 처리하는 방법론 배열의 문제점 & 컬렉션의 장점 배열의 문제점 1. 한 번 크기를 지정하면 변경할 수 없다 필요에 다라 공간을 늘리거나 줄일 수 없음 공간 크기가 부족하면 에러가 발생 ->할당 시 넉넉한 크기로 할당하게 됨(메모리낭비) 2.. 기록된 데이터에 대한 중간 위치의 추가,삭제가 불편하..