Java 24

[Java] 생성자(Constructor) 기본 개념 정리

자바에서 객체를 생성할 때 호출되는 생성자에 대해 정리하였다.생성자의 기본 개념부터 메서드 호출, 오버로딩, 특징까지 알아보자. 1) 생성자란?생성자는 객체가 생성될 때 자동으로 실행되는 특별한 메서드이다.클래스 이름과 같고, 리턴 타입이 존재하지 않는다.class Student { String name; int age; // 생성자 Student(String inputName, int inputAge) { name = inputName; age = inputAge; }}예를 들어 new Student("민지", 20)을 호출하면 생성자가 실행되며 필드가 초기화된다. 2) 생성자 안에서 메서드 호출생성자 내부에서 메서드를 호출하면 객체 초기화와 동시에 ..

Java/Java 2025.07.09

[Java] XML Parsing 방식(DOM, SAX 방식)

최근에 대용량 데이터 처리에 대한 업무 개선을 위해,외부에서 받아서 처리하는 XML 데이터의 파싱 방식을 변경하는 작업을 진행했다.XML 데이터를 파싱하는 대표적인 방식으로 DOM 방식과 SAX 방식이 있는데,각각의 장단점과 방식을 변경한 이유에 대해 설명해보겠다. 1) XML 파싱(XML Parsing)1-1) XML Parsing? : XML(eXtensible Markup Language)은 데이터를 저장하고 전송하기 위한 표준화된 형식이고, XML 파싱은 이러한 XML 문서를 읽고 그 구조와 내용을 프로그램에서 사용할 수 있는 형태로 변환하는 과정이다.1-2) XML 문서의 구조 : XML 문서의 구조를 아래 예시를 통해 알아보자.XML 문서 예시 귤 과일 ..

Java/Java 2025.04.18

[Spring/MyBatis] 페이징 처리, Pagination 구현하기

API를 개발할 때, 페이징처리는 서버의 부하를 위해 꼭 필요한 기능이다.Spring에서 제공하는 Pageable을 활용하여 페이징 처리(페이지네이션)를 하는 방법에 대해 알아보자. 1) Pagination(페이지네이션): 데이터를 정렬기준, 페이지 크기, 몇 번째 페이지인지를   토대로 정보를 전달해주는 것1-1) Pageable Interface: Spring에서 페이징 처리를 하기 위해서 사용하는 인터페이스이다.객체를 생성할 때는 구현체인 PageRequest 를 사용하는데,PageRequest 생성자를 보면 page, size, sort 가 있다.[ PageRequset.class ]API를 호출할 때, 몇 번째 페이지인지에 대한 정보(page)와한 페이지당 보여줄 데이터의 개수(size)를 함께..

[Spring Data JPA] JPA 기본 Annotation 정리

Spring JPA에서 객체를 entity로 사용하기 위해 @Entity 어노테이션을 사용해야한다.이처럼 JPA를 사용할 때 필요한 Annotation에 대해 몇 가지 알아보자.  아래의 Member Entity를 예시로 들어보자.1) @Entity: entity 어노테이션은 DB 테이블과 1:1로 매칭되는 객체로, entity 객체의 인스턴스 하나가 테이블에서 하나의 레코드 값을 의미한다.따라서 각 레코드를 구분하기 위한 유일한 키값을 가지는데, 이것이 테이블의 PK(Primary Key)와 같은 의미를 가지며, @Id 어노테이션으로 정의한다. 2) @GeneratedValue: PK 자동 생성 전략을 설정하는 어노테이션으로, 4가지가 있다.@GeneratedValue(strategy = {기본키값 생..

[Spring Data JPA] JPQL 사용법

프로젝트를 진행하던 중, 쿼리를 어떻게 작성할지에 대하여 고민하다가 JPA를 사용하게 되었다.JPA는 간결하게 쿼리를 메소드로 호출할 수 있다는 장점이 있는데, 쿼리 작성에 조금 제한적이라는 어려움이 있었다.이를 보완하기 위해 찾아보다가 JPQL라는 것을 접하였고, 이를 활용하여 쿼리를 작성하였다.JPQL가 무엇인지, 사용법에 대해 간단히 알아보자. 1) JPQL란?: JPA는 SQL을 추상화한 JPQL(Java Persistence Query Language)이라는 객체 지향 쿼리 언어를 제공한다.테이블을 대상으로 쿼리를 작성하는 것이 아닌, 엔티티 객체를 대상으로 쿼리를 작성한다.따라서 엔티티를 각각 생성해준 뒤 쿼리를 작성할 수 있다.JPQL은 SQL과 문법이 유사하며, SELECT, FROM, W..

[Java] printStackTrace 취약점

intelliJ 환경에서 Java Spring 개발을 하던 중, e.printStackTrace() 구문을 사용한라인에서 warning 표시가 나오는 것을 보았다.코드를 지우면서 문득 왜 사용을 지양해야하는지 궁금해져서 찾아보게 되었다.  1) printStackTrace란?: printStackTrace() 는 예외발생 당시의 호출스택(Call Stack)에 있었던 메소드의 정보와 예외 메시지를 화면에 출력한다.위의 코드는 실제 printStackTrace() 함수의 내부 구현인데,System.err를 PrintStream으로 사용하고 있다.그리고 이 함수 내부를 타고 가다가 보면 StackTraceElement.of 를 통해 StackElement를 가져온다.이 of 메소드 내부를 또 살펴보게 되면 ..

Java/Java 2025.03.17

[Java/Spring] MyBatis typeAlias 사용법

Java로 서버개발을 할 때 MyBatis를 자주 사용하게 될 것이다.이 때 MyBatis의 typeAlias 라는 것을 사용할 수가 있는데,Alias는 "별칭" 이라는 의미로 사용자가 직접 정의하는 이름(별명)을 붙여주는 것이다.MyBatis를 사용하여 데이터를 처리할 때, 일반적으로 결과 데이터와 매핑되는 Java 클래스를 생성하게 된다.이 때 해당 Java 클래스의 Alias를 지정하여 사용하는 방법에 대해 알아보자. 1) typeAlias란: MyBatis를 이용하여 DB의 데이터를 받아 자바의 VO 객체에 담거나,반대로 자바 VO 객체의 데이터를 DB에 전송하는 과정에서보다 간결하게 코드를 작성하기 위해 사용하는 것이다.클래스의 경로를 별칭을 사용하여 정의해두고,이 별칭을 클래스 경로 대신 활용..

[Java] 추상 클래스(Abstract Class)란?

객체 지향 프로그래밍의 특징 중, 추상화(Abstration)에 대한 내용이 있다. 추상화의 핵심 개념은 "공통성과 본질을 모아서 추출"한다는 것인데, 추상 클래스가 무엇인지, 왜 사용하는지에 대한 내용을 알아보면서 객체 지향 프로그래밍의 추상화에 대한 개념도 함께 이해해보자.1. 추상 클래스란?: 추상 클래스(Abstract Class)는 클래스들의 공통되는 필드와 메소드를 정의한 클래스를 말한다.추상 메서드를 선언해 놓고 상속을 통해 자식 클래스에서 메서드를 완성할 수 있게 된다.1-1. 추상 클래스 선언 예시public abstract class Player { ... }1-2. 추상 메소드 선언 예시public abstract void walk(); 2. 추상 클래스의 특징추상 클래스 내부에 추상..

Java/Java 2025.03.14

[Java] 문자열에서 문자 추출 charAt() 함수

자바에서 String 문자열 중 특정 위치의 문자 한 글자만 추출하고 싶을 때 사용하는 charAt() 함수가 있다.그 결과값은 char 타입으로 반환되는데, 이 함수에 대해 알아보자. 1) charAt(): String 타입의 데이터(문자열)에서 특정 문자를 char 타입으로 변환할 때 사용하는 함수이다.문법: public char charAt(int index) 2) 예시String str = "Hello Java Practice!";char target1 = str.charAt(0);char target2 = str.charAt(5);char target3 = str.charAt(str.length()-1);System.out.println(target1);System.out.println(targ..

Java/Java 2025.03.14

[Java] compareTo 함수

자바의 compareTo 라는 함수는 두 개의 값을 비교하여 int 값으로 반환해주는 함수이다.이 함수는 "문자열의 비교" 또는 "숫자의 비교" 두 방식이 존재하는데, 이 각각의 경우에 대해 알아보자. 1) 숫자형 비교: 숫자형 비교는 Byte, Double, Integer, Float, Long 또는 Short 등을 비교할 수 있다.반환되는 값은 아래 규칙을 따른다.기준 값과 비교대상이 동일한 값일 경우: 0기준 값이 비교대상 보다 작은 경우: -1기준 값이 비교대상 보다 큰 경우: 1 2) 숫자형 비교 예시Integer x = 7;Integer y = 4;Double a = 1.5;Double b = 1.75;System.out.println(x.compareTo(y));System.out.print..

Java/Java 2025.03.14