전체 글 90

JPA

JPA ( Java Persistence API )데이터베이스와 객체 ( 클래스 ) 를 연결해주는 기술SQL 없이도 DB 작업을 할 수 있게 도와주는 ORM 기술자바에서 표준으로 만든 인터페이스 ( interface )대표적인 구현체 : Hibernate cf. Mybatis : SQL을 대신 다뤄주는 Mapping 해주는 기술임 -> 우리나라에서 많이 씀, java Spring : 우리나라에서 많이 씀 Spring Boot : 필요한 것만 추가해서 가볍게 시작할 수 있음Spring : 필요없는 것 까지 모두 추가되서 무거울 수 있음 # 테이블 자동 생성/수정 기능 끄기spring.jpa.hibernate.ddl-auto=none# 실행되는 sql 쿼리를 콘솔에 출력spring.jpa.show-sql=..

Backend/String 2025.06.30

RESTAPI

build.gradleBCryptBCrypt는 패스워드를 안전하게 암호화하기 위해 널리 사용되는 해시 함수 알고리즘입니다. org.mindrot.jbcrypt.BCrypt는 이 알고리즘을 자바에서 쉽게 사용할 수 있도록 제공하는 라이브러리로, 비밀번호를 해시하여 저장하고, 사용자가 로그인할 때 입력한 비밀번호가 기존 해시와 일치하는지 안전하게 비교할 수 있도록 hashpw()와 checkpw() 메서드를 제공합니다. 이 방식은 단방향 암호화로 복호화가 불가능하고, salt을 자동으로 적용하여 동일한 비밀번호라도 해시값이 달라지기 때문에 무차별 대입 공격(Brute-force)과 레인보우 테이블 공격에 강한 보안성을 갖습니다....dependencies { implementation 'org.spri..

Backend/String 2025.06.19

Thymeleaf

타임리프(Thymeleaf)는 자바 기반 웹 애플리케이션에서 사용되는 현대적인 서버 사이드 템플릿 엔진으로, HTML, XML, JavaScript, CSS 등 다양한 마크업 언어와 자연스럽게 통합됩니다. 특히 HTML 파일을 그대로 브라우저에서 열어도 구조를 유지할 수 있어 디자이너와 개발자가 협업하기에 유리하며, ${변수}나 th:text, th:if 같은 속성 기반 문법을 통해 동적인 화면 구성이 가능하고, Spring MVC와도 강력하게 통합되어 컨트롤러에서 넘겨준 데이터를 직관적으로 표현할 수 있습니다. 1. 문법 구조 가입 2. 회원 가입 예제테이블CREATE TABLE member ( id INT AUTO_INCREMENT PRIMARY KEY, username V..

Backend/String 2025.06.18

스프링 vs 스프링부트

스프링(Spring)은 자바 플랫폼을 위한 오픈소스 프레임워크로, 객체 지향 설계를 기반으로 의존성 주입(DI)과 관점 지향 프로그래밍(AOP) 같은 기능을 통해 개발자의 생산성과 유지보수성을 높여주는 반면, 설정이 복잡하고 XML 설정 파일이나 자바 설정 클래스가 많이 필요하다는 단점이 있습니다. 이에 비해 스프링부트(Spring Boot)는 스프링을 더욱 쉽게 사용할 수 있도록 만든 확장 프레임워크로, 자동 설정(Auto Configuration)과 내장 톰캣, 스타터 의존성 관리 등을 통해 개발자가 빠르게 애플리케이션을 구축할 수 있도록 도와줍니다. 1. IntelliJ에서 Spring 프로젝트 만들기 (Spring Boot 기준) 1. 프로젝트 생성IntelliJ 실행 → New Project ..

Backend/String 2025.06.18

MyBatis

** MyBatisJava 애플리케이션에서 SQL을 XML 또는 어노테이션으로 관리하면서 SQL 결과를 자바 객체에 매핑해주는 ORM 프레임 워크, 자바에서 자주 사용되는 프레임워크* 동작 원리SqlSessionFactory 생성SqlSession 열기Mapper에서 SQL 실행결과를 자바 객체로 매핑SqlSession 닫기https://mybatis.org/mybatis-3/ MyBatis 3 | Introduction – mybatisWhat is MyBatis? MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminate..

Backend/Servlet 2025.06.18

MVC2

** MVC2: 웹 애플리케이션에서 요청 처리와 화면 출력을 명확히 분리한 구조로, 서블릿이 컨트롤러 역할을 하여 클라이언트의 요청을 받아 비즈니스 로직을 처리한 뒤, 데이터를 JSP에 전달하고 JSP는 오직 결과 화면만 출력하는 방식→ 스프링 이해하는데에, 도움이 됌.로직과 화면이 분리되어 코드의 재사용성과 유지보수성이 향상되며, 실제 프로젝트와 프레임워크(Spring)에서도 널리 채택되는 구조더보기클라이언트 > 컨트롤러 서블릿 > DAO/DTO > 결과 저장 > JSP 포워딩 * MC1 과 MC2 비교항목MVC1MVC2Controller없음 (jsp가 처리)있음 (Servlet이 처리)ViewJSP가 로직 + 출력JSP는 오직 View코드 재사용낮음높음유지보수성낮음높음사용 기술JSP ..

Backend/Servlet 2025.06.12

Tomcat9

* EL(Expression Language)JSP에서 자바코드를 직접 쓰지 않고, 간단한 문법으로 데이터를 표현할 수 있도록 도와주는 언어더보기 ↓ (EL로 변환)${name} - 내장객체 값도 찍을 수 있음** 내장 객체 우선순위pageScope : 현재 페이지에서만 사용할 수 있는 속성 (페이지 이동시 자동 삭제)requestScopesessionScopeapplicationScope ** EL의 주요기능${user} → 변수${user.userid} = ${user["userid"]} → 객체${user[0]} → 배열${user["key"]} → 맵 연산 가능 → ${price + 1000} // + - / * mod(나머지) e..

Backend/Servlet 2025.06.10

Session & Servlet api

** Session서버와의 관계를 유지하기 위한 수단서버상에 객체형태로 존재서버당 하나의 세션 객체를 가질 수 있음 ↔ 브라우저 별 서로 다른 세션 사용( = 서로 다른 클라이언트로 인식함 )브라우저 창을 종료하면 삭제 (MaxAge에 따라 간혹가다 유지되는 경우도 있지만, 거의 없음)서버에서만 접근이 가능하여 보안이 좋고, 저장할 수 있는 데이터에 한계가 없음 단, 메모리의 한계가 있음클라이언트의 요청이 발생하면 자동생성되어 고유한 ID값을 클라이언트에 넘겨주며 이것을 쿠키에 저장더보기[ 브라우저 1] → [ 세션객체 ] : 브라우저가 다르면 세션객체가 따로만들어짐[ 브라우저 2] → → ↑ ※ 로그인 유저를 세션 타임 내 요청을 안하면 로그인 불가함..

Backend/Servlet 2025.06.05