LoGin
article thumbnail
LocalDateTime과 ZonedDateTime 시간, UTC 타임존 적용하기
Back End/Spring 2024. 10. 28. 20:26

시스템이 다양한 타임존에서 동작할 때, UTC(협정 세계시)를 기준으로 작업해야 하는 경우가 많습니다. 제가 하는 프로젝트가 세계 어디에서든 사용할 수 있도록 i18n까지 도입하고 협정 세계시도 적용해서 동적으로 바꿔 보여주는 작업을 거칩니다.사용자에게는 로컬 시간을 보여줘야 하죠.Spring Boot에서 LocalDateTime과 처리했던 일을 기록해 봅니다.  LocalDateTime과 ZonedDateTime의 차이 LocalDateTime은 타임존 정보를 가지지 않는 시간 정보를 제공합니다. 즉, 시스템의 로컬 타임존에 기반한 날짜와 시간 정보를 나타냅니다. 시간대 정보가 없으므로 단순하게 현재의 시간 정보만을 나타냅니다. ZonedDateTime은 타임존을 포함하는 시간 정보를 제공합니다. 즉,..

article thumbnail
[Java] NIO 기반 파일 입출력 합치기 Kotlin 예제
코딩/JAVA 2024. 8. 29. 21:26

파일 내용을 합칠 일이 드물지만 일하는 중 SQL 파일을 하나로 합쳐야 하는 경우가 생겼습니다. Java NIO(New Input/Output)는 JDK 1.4부터 도입된 새로운 입출력 API로, 기존 IO 보다 빨라졌다고 하네요. Java NIO란 뭘까New Input/Output의 약자로, 기존 IO의 느린 처리 속도를 개선하고 효율적인 입출력 작업을 제공하기 위해 도입된 API입니다. 그렇다면 IO는 뭘까자바의 표준 라이브러리로, 프로그램과 외부 (파일, 네트워크 등) 간의 데이터를 입출력하는 기능을 제공합니다. Java IO는 JDK1.0부터 포함된 API로, 스트림 기반의 동기식 입출력을 제공합니다. 자바에서 파일 읽기, 파일 쓰기, 네트워크 통신 등의 다양한 입출력 작업을 수행하는 데 사용되겠..

article thumbnail
JPA와 하이버네이트: 객체-관계 매핑의 장점과 비교
Back End/Spring 2024. 3. 9. 19:45

JPA 관계형 데이터베이스 영속성(db에 데이터를 넣어 영구적으로 관리하는 것)을 관리하기 위한 JAVA표준 인터페이스 Hibernate 가장 인기있는 JPA의 구현체, ORM(객체-관계 매핑) 프레임워크 중 하나. ORM 객체 관계형 데이터베이스 간의 매핑을 자동화하는 기술. 이 기술로 개발자는 객체를 사요하여 데이터를 다루고, ORM프레임워크가 이를 데이터 베이스 테이블과 매핑시켜 준다. 그런 기술이다. 하이버네이트는 JPA의 구현체 중 하나로, 자바 애플리케이션에서 객체와 관계형 데이터베이스 간의 매핑을 쉽게 처리할 수 있게 해주는 도구입니다. JPA는 객체 지향 프로그래밍 방식으로 데이터베이스와 상호 작용할 수 있도록 해줍니다. 이를 통해 개발자들은 SQL 쿼리를 직접 작서 아는 번거로움 없이 객..

article thumbnail
Java VSCode에서 게터세터(getter, setter) 쉽게 만들기 source action 자동생성
코딩/JAVA 2024. 3. 4. 11:42

평소 이클립스나 인텔리제이만 써오다가 vscode를 사용하다 보니 익숙하지 않은 툴 사용 때문에 고통받고 있습니다. vscode에서 getter setter를 클릭 몇 번으로 생성해 보겠습니다. 자바 컴파일 실행 환경을 구축했다면 dto 만들어서 바로 게터세터 만들겠습니다. DTO 만들기 package com.example.dto; import java.util.Map; public class UserDto { private String userId; private String userPw; private Map userInfo; @Override public String toString() { return "MyDataDTO{" + "userId='" + userId + '\'' + ", userPw=..

article thumbnail
tomcat work디렉토리 catalina와 컴파일 테스트 (/work/Catalina/localhost) 디렉터리 Catalina 폴더 생기는 이유

Tomcat work디렉터리 Catalina 폴더 생기는 이유 jsp 파일들의 컴파일된 결과물이 저장되는 곳입니다. 안에 Catalina폴더는 톰캣을 실행하지 않으면 존재하지 않습니다. 왼쪽 사진이 한 번이라도 실행시킨 톰캣이고 오른쪽은 한 번도 구동하지 않은 톰캣입니다. 톰캣이 웹 애플리케이션을 컴파일하고 생성할 때 생성되는 파일들을 저장합니다. 컴파일 테스트 컴파일 테스트를 위해 C:\tomcat\tomcat9.0.86\webapps\ROOT 부분에 jsp파일 하나 만들어 컴파일해봤습니다. 톰캣 실행 (컴파일 후) >>> 파일을 만들고 컴파일하면 밑에 코드가 생겼다. 컴파일되면서 class파일로 추가되는 것을 볼 수 있다. 까보자 test_jsp.java 입력한 게 out.println으로 html로..

article thumbnail
Rocky Linux 톰캣 Java 설치하기 고양이 띄우기: 연결 방법과 포트포워딩 가이드 (VirtualBox)
Back End/Linux 2024. 2. 28. 19:52

VirtualBox에 Rocky Linux 설치는 이전 글로 가주세요. 관리자 권한으로 바꾸기 저는 편의를 위해 root 계정으로 진행하겠습니다. su (지정한 비밀번호 입력) 그럼 앞이 root로 바뀌면서 명령어 치는 곳이 $에서 #으로 바뀝니다. 필요한 프로그램 다운로드 패키지 매니저 업데이트 dnf update dnf upgrade Wget 설치 : web 다운로드하기 위한 프로그램 tar 설치 : 압축을 풀기 위한 프로그램 dnf install wget -y dnf install tar -y Apache httpd 패키지 다운로드 아파치 설치 dnf install httpd -y java jdk설치하기 dnf list java* dnf install java-11-openjdk.x86_64 저는 ..

article thumbnail
java 자바에서 상속과 오버로딩: 객체지향 프로그래밍의 기초
코딩/JAVA 2024. 2. 8. 14:05

자바 프로그래밍에서 상속과 오버로딩은 객체지향 프로그래밍의 핵심 개념 중 하나로, 코드의 재사용성과 유연성을 높이는 데 중요한 역할을 합니다. 상속은 is-a 관계를 표현하며, 기존 클래스의 특성과 기능을 새로운 클래스에게 물려줌으로써 코드의 중복을 최소화하고 확장성을 높입니다. 예를 들어, 동물 클래스가 있다면 이를 상속받는 사자, 닭, 돌고래 클래스는 동물의 공통된 특성과 기능을 재사용할 수 있습니다. 이렇게 상속을 통해 클래스를 작성하면, 코드를 처음부터 새롭게 작성할 필요 없이 기존 클래스의 일부를 재활용하여 새로운 클래스를 정의할 수 있습니다. 또한, 오버로딩은 같은 이름의 메서드나 생성자를 여러 개 정의하여 매개변수나 타입을 다르게 함으로써 다양한 입력에 대응할 수 있습니다. 이를 통해 한 개..

article thumbnail
Java 객체지향 프로그래밍에서의 Getter와 Setter 활용: 데이터 관리의 핵심
코딩/JAVA 2024. 2. 6. 02:34

자바 객체지향 프로그래밍에서는 데이터를 효과적으로 관리하고 외부 접근을 안전하게 제어하기 위해 Getter와 Setter메서드를 활용합니다. 이 기능들을 정보 은닉과 캡슐화의 핵심이며, 데이터 클래스의 설계를 보다 효과적으로 만들어줍니다. Getter와 Setter의 역할 Getter는 클래스의 필드값을 외부에서 읽을 수 있도록 해주고, Setter는 필드 값을 변경할 수 있도록 해줍니다. 이를 통해 데이터의 캡슐화가 이루어지며, 외부에서 직접 접근하지 못하도록 하는 정보 은닉이 가능해집니다. 클래스 A의 예시를 살펴보면, private로 선언된 필드에 대한 Getter와 Setter를 제공하여 외부에서 안전하게 데이터를 다룰 수 있도록 합니다. class A { private int a; public ..

article thumbnail
JAVA 메서드(method)의 이해와 활용
코딩/JAVA 2024. 2. 5. 20:13

프로그래밍을 공부하다 보면 함수라는 단어를 많이 들어보셨을 겁니다. 자바에서는 이 '함수'를 '메서드'라고 부릅니다. 메서드는 프로그램의 기능을 구현하는데 이어 핵심적인 역할을 하는데요, 자바에서는 메서드를 크게 두 가지 형태로 구분할 수 있습니다. 하나는 '인스턴스 메서드(instance method)'dlrh, 다른 하나는 '정적 메서드(static method)'입니다. 1. 인스턴스 메서드 인스턴스 메서드는 객체마다 독립적으로 존재하는 메서드입니다. 이 메서드는 'this' 키워드를 가지고 있으며, 객체가 생성된 후에만 사용 가능합니다. 또한 이 메서드는 필드를 외부에서 사용할 수 있습니다. 자바에서 흔히 일반적으로 정의하고 사용하는 메서드이다. public class MyClass{ privat..

article thumbnail
Java 인텔리제이 디버깅 모드 사용하는 이유와 사용법 직접 사용해보자
코딩/JAVA 2024. 2. 1. 19:56

JAVA에서 디버깅 모드를 사용하는 이유는 코드의 동작을 이해하고, 오류를 찾아 수정하는 데 도움이 되기 때문입니다. 디버깅 모드에서 코드의 실행을 단계별로 진행하고, 변수의 값을 실시간으로 확인할 수 있습니다. 개발 툴에서 오류날것 같은 부분을 잘 잡아주길래 저는 디버깅 모드를 잘 사용하지 않았었습니다. 하지만 코드가 길어지고 서비스를 하려고 테스트도 해보다보면 별 이상한 버그와 에러가 많이 나더라고요. 의문의 예외도 코드의 데이터를 볼 수 있다보니까 버그를 잡는데 훨씬 편리했습니다. 그래서 문제와 해결하는데 사용했던 디버깅 모드를 공유하겠습니다. 용어 및 기능 Breakpoint 중단점프로그램을 디버깅 모드로 실행하다가 중단점으로 설정돼 있는 코드 라인을 만나면 실행 가능 불가능 여부를 떠나 중단하고..

728x90