
JPA의 관심이 세계적으로 뜨거워지면서 많은 사람들이 공부하고 많은 조직이 JPA를 도입하고 있습니다. JPA 지연로딩에 대해 많은 사람들이 강조하는데 나름 이해하고 공부한 내용을 정리해 보았습니다. 지연 로딩이란?JPA는 엔티티(Entity) 간의 연관 관계를 자동으로 매핑해 주는 편리한 기능을 제공합니다.이때 성능을 위해 fetch 전략을 설정하게 되는데, 가장 대표적인 것이 '지연 로딩(Lazy Loading)'입니다. 지연 로딩은 데이터를 실제로 사용할 때까지 SQL 쿼리를 실행하지 않는 방식입니다. 예를 들어,@Entityclass Member( @Id @GeneratedValue val id: Long? = null, val name: String, @ManyToOne(fetc..

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

spring으로 개발한다고하면 한번쯤은 들어봤을 시큐리티.처음에 공부하려고 열어봤다가 바로 닫았던 기억이 있네요. Spring Security는 Java 애플리케이션에서 보안을 제공하는 강력한 프레임워크인데요.시큐리티는 인증(Authentication)과 권한 부여(Authorization) 작업을 처리하는데 중점을 두고 있고, 다양한 보안 기능을 제공합니다. 그 중에서도 'UsernamePasswordAuthenticationToken' 클래스를 알아보겠습니다. UsernamePasswordAuthenticationToken'UsernamePasswordAuthenticationToken' 클래스는 사용자 인증을 처리하는 중요한 역할을합니다.Spring Security에서 사용자 이름과 비밀번호를 기..

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

제가 백엔드 spring 공부하기 시작할 때부터는 스프링 프로젝트 만들어주는 사이트가 있었는데 옛날 없던 시절에는 직접 코드로 한줄한줄 프로젝트 설정해줬다고하네요... 그래도 인터넷에서 공유해서 복붙정도는 했겠죠. 그래서 소개드릴 spring project 클릭 몇번으로 만들 수 있는 사이트입니다. 이미 많은 개발자들은 알고계셔도 이런 글을 계속 올려줘야 최신 정보로 업데이트되니 가볍게 작성해 보겠습니다. https://start.spring.io/ Spring Boot프로젝트 생성 화면 간단히 설명드리자면 프로젝트를 gradle로 할지 maven으로 할지 선택할 수 있습니다. Project Gradle-Groovy : Groovy언어를 사용하여 Gradle프로젝트를 생성합니다. Gradle-Kotlin..

테스트 어노테이션은 주로 테스트코드를 작성하고 실행할 때 사용되는 어노테이션입니다. 다양한 테스트 프레임워크가 있으며, 대표적으로 JUnit과 TestNG가 있습니다. 프레임워크에서 해당 어노테이션을 사용하면 단위 테스트와 통합 테스트를 실행합니다. 몇 가지 테스트 어노테이션을 살펴보겠습니다. 1. @Test 테스트 메서드를 정의하는 기본 어노테이션입니다. 테스트 케이스 및 대상과 결과 확인을 어떻게 할지를 정의하는 메서드에 사용됩니다. 2. @Before JUnit 5에서는 @BeforeEach라는 새로운 어노테이션이 도입되어 사용되고 있습니다. 이 어노테이션은 테스트 각각의 실행 전에 실행되는 메서드를 정의하며, 공통적인 설정이나 테스트 환경을 준비할 때 유용합니다. 3. @After Junit 5에..

해당 포스팅은 스프링 프로젝트 구조를 알고 보면 이해하는데 도움이 된다. Spring 프로젝트 구조 mvc 프로젝트 폴더 구조, 스프링 동작 순서 Spring framwork를 사용한 mvc 프로젝트를 시작하기 앞서 프로젝트 폴더 구조를 알고 어떤 폴더에 컨트롤러(Controller), 어떤부분에서 모델(model)역할을 하고, 어떤 폴더안에 파일들은 뷰(View) 역할을 하 loginshin.tistory.com 웹 프로젝트를 진행하면 다양한 설정들과 코드, 이미지, 코드 표준, 라이브러리, url, 매핑 등등... 많은 것들을 관리해야 하는데, 공부하며 프로젝트 구조 중 웹 관련 폴더에 있는 스프링 MVC환경 설정 파일들과 웹 프로젝트 환경 설정 파일을 살펴보자 스프링의 환경설정은 XML형식으로 자바..

Spring framwork를 사용한 mvc 프로젝트를 시작하기 앞서 프로젝트 폴더 구조를 알고 어떤 폴더에 컨트롤러(Controller), 어떤부분에서 모델(model)역할을 하고, 어떤 폴더안에 파일들은 뷰(View) 역할을 하는 파일들이 위치하는지 어느정도 인지하고있어야 mvc 프로젝트의 흐름이나 원할한 프로젝트를 진행하기위한 이해를 도울 수 있다. 물론 표준화돼서 다른 팀이나 프로젝트를 진행해도 같은 구조를 사용하니 익혀두면 좋다. (프로젝트 펼쳤을때 사진) 프로젝트 구조 크게 나눈 프로젝트 구조 - 서블릿 관련 폴더 - 웹 관련 폴더 서블릿 관련 폴더는 스프링 프레임워크의 라이브러리나 자바 클래스 파일들(Controller), 기타 클래스나 유틸 클래스 등 src 폴더에서 관리를 합니다. 주요 ..

자바나 spring을 사용할 때 JDK를 설치해서 bin 파일을 환경변수 설정하는데 c:\java\jdk15\bin 으로 설정하는게아닌 위에 jdk의 경로를 % JAVA_HOME%\bin처럼 변수로 만들어 사용합니다. 이렇게 하는 이유는 여러 버전의 JDK를 사용하거나 경로를 변경할 때 편리하다고 볼 수 있습니다. 한번 JAVA_HOME변수를 설정해 두면, JDK 경로를 바꿔야 할 때에는 JAVA_HOME변수의 값을 변경하는 것만으로 충분하기 때문에. 환경변수 설정은 윈도우에서 다음과 같은 과정을 따릅니다. 실제로 한 사례로 Tomcat 실행시킬 때 에러가 났었는데 변수로 만들어서 사용하니 오류가 해결된 경우도 있다고합니다. 또, JVM이 'java.exe'를 찾지 못한다고 합니다. 그 외에도 표준화를 ..

스프링 프레임 워크에서는 Model(데이터)과 View(화면) 그리고 Controller(제어) 세 가지 요소들이 서로 분리되어 있어서 각각의 역할을 수행하게 됩니다. 이중에서도 컨트롤러 부분을 좀 더 자세하게 살펴봐야 합니다. MVC패턴 자체는 효율적으로 협업하기 위한 개발 방법론입니다. MVC 1과 MVC2가 존재합니다. 두 개발 방법론에는 장단점이 있겠지만 보통 View와 Controller를 따로 구분해 사용하는 mvc2패턴을 많이 사용합니다. mvc2패턴은 널리 표준으로 사용되는 패턴이죠 view에서 컨트롤러에 대해서 어떠한 정보도 알지 말아야 한다는 규칙이 있습니다. 우선 간단하게 설명하자면 model 데이터를 다루는 코드를 짭니다. 효율적으로 db와 주고받는 코드의 알고리즘을 다룹니다 con..