Tiny Bunny
본문 바로가기

⚙️Backend13

[Node.js] Node.js 모듈시스템 / Common JS & ES Module 목차1. Node.js와 npm2. Common JS (CJS) vs. ES module (ESM) 1. Node.js 와 npm ➡️ Node.js 란? 자바스크립트의 런타임 환경,브라우저의 밖(서버, 로컬 컴퓨터 등)에서도 자바스크립트를 실행할 수 있게 해주는 플랫폼이다.app.js라는 파일을 node app.js로 실행하면 Node.js가 그 JS파일을 실행해준다. Node.js를 웹개발에서 쓰는 이유 🔹 백엔드 개발Express.js 같은 프레임워크를 통해 REST API 서버를 빠르게 구축할 수 있다.비동기 처리에 강해, 많은 요청을 효율적으로 처리한다.실시간 기능 (ex. 채팅, 알림) 구현에 최적!🔹 프론트엔드 개발 환경 구축npm (Node Package Manager)으.. 2025. 4. 30.
[DB] 로킹(Locking) 단위 , 로킹과 병행성, DB 로킹 기법 로킹 단위란?로킹(locking) 단위란 데이터베이스에서 말그대로 ‘잠그는 단위’를 나타낸다. 로킹 기법이란 하나의 트랜잭션이 데이터를 엑세스하는 동안, 다른 트랜잭션이 해당 데이터 항목을 엑세스 할 수 없도록 하는 병행 제어 기법이다. ‘동시성 제어 기법’ 이라고도 한다.여기에서 록(lock)은 데이터를 사용하는 단위라고 볼 수 있다.마치 운영체제의 스레드 스케줄링처럼, 한 번에 하나만 사용하도록 하는 단위를 ‘로킹 단위’라고 한다.실질적인 예시를 들어보자면,프로젝트를 진행할 때 팀원과 DB를 관리해야하는 일은 빈번하다. 만약 내가 데이터를 추가하거나 수정하는 동안 다른 팀원도 동시에 같은 데이터를 건들게 될 경우, 오류가 발생하거나 올바르게 데이터를 처리하는 데에 문제가 발생한다. ❗️이 경우, 로킹.. 2025. 2. 26.
[DB/OracleDB] Oracle DB 삭제한 데이터 복구하기 (TIMESTAMP) Oracle DB 삭제한 데이터 복구하기 (TIMESTAMP) 문제상황 1. 프로젝트를 진행하며 중복된 상품이 메인화면에 뜨는 오류가 발생해서 DB 정리를 맡게되었고, 쿼리문으로 테이블에 있는 데이터들을 정리시작.2. 'ORA-02292: 무결성 제약조건이 위배되었습니다- 자식 레코드가 발견되었습니다.' 라는 오류가 뜨며 해당 데이터가 삭제되지 않음. (해당테이블은 여러 자식테이블이 참조하고 있었기 때문이다..)3. 그래서 쿼리문을 통해 여러 테이블을 이것저것 삭제를 하다가 , 전혀 상관없는 상위의 쌩(?)데이터를 삭제하는 대실수를 저지름... (이제 해당 테이블로부터 작동하던 모든 동작에 오류발생... ㅎ) 찾아보니 삭제한 데이터를 시간을 기준으로해서 해당 테이블을 복구하는 방식이 있었다.. 2025. 1. 23.
[Spring Boot] Controller, Service, DAO, Mapper, DTO 정리 1. 기본구조   웹 화면 - Controller - Service - DAO - Mapper - DB  Controller : 호출된 URL을 통한 데이터 입출력Service : DAO 데이터를 주고 받으며 비즈니스 로직 수행DAO(Data Access Object) : DB 데이터에 접근, 데이터를 삽입, 삭제, 조회 등 할 수 있음.Mapper : Mapping  파일에 있는 SQL을 자바 인터페이스를 통해 호출할 수 있도록 해줌.DTO(Data Transfer Object) :  계층 간 데이터 교환을 위한 로직을 가지지 않는 데이터 객체. getter, setter  메소드만 가진 클래스Mapper: DAO 대신 인터페이스만을 사용하여 DB에 접근할 수 있다. (mybatis 사용 시 사용함.).. 2024. 12. 25.
[Thymeleaf] Thymeleaf 초기 설정 , 뷰 템플릿 사용 타임 리프의 특징은 아래와 같습니다.*.html 확장자를 사용한다.별도의 레이아웃 프레임워크의 도움 없이 레이아웃을 관리할 수 있다.스크립트릿이 아닌 HTML 문법으로 JAVA 데이터를 처리할 수 있다.생산성 하나에 엄청나게 공을 들인 느낌이 납니다.타임 리프에서는 JSP의 스크립트릿은 사용할 수 없고, 대신 같은 기능을 하는 ${}과 같은 표현식을 사용할 수 있습니다.하지만 스크립트릿과는 다르게 HTML 코드의 심미성을 크게 해치지 않습니다.각설하고, 그럼 이 thymeleaf를 Spring Boot 프로젝트에서 어떻게 사용하는지 알아보겠습니다. 1. Thymeleaf prefix, suffix 정의먼저, Thymeleaf 파일을 어디서 관리할 것인지 application.properties에 정의해야.. 2024. 12. 14.
[Spring Boot] 컨트롤러 / @annotation 정리 +간단한 view파일 넘기기 이번글은 Controller 에 대해 좀더 자세히 알아보고 Index 페이지를 만들어 보겠다. Controller란 MVC에서 C에 해당하며 사용자의 요청을 처리한 후 V에 해당되는 뷰에 M에 해당되는 모델 객체를 넘겨주는 역할을 담당한다. Controller 의 대표적인 이노테이션은 어떤게 있는지 알아보겠다.@ControllerController 의 역할을 수행한다고 명시한다. 명시된 클래스를 Spring MVC 컨트롤러로 표시하는데 사용된다.주로 View을 반환하기 위해 사용하며 데이터를 반환하기 위해서는 @ResponseBody 어노테이션을 사용하여 클라이언트가 요청한 데이터를 JSON 형태로 데이터를 반환할 수 있다.사용 방법은 클래스 선언부에 입력한다.@Controller public class.. 2024. 12. 14.
[Spring Boot] 스프링 의존성 주입 @Autowired, @Resource, @Inject 스프링 의존성 주입 @Autowired, @Resource, @Inject (Java Spring Dependency Injection)​의존성 주입은 객체를 직접 생성하지 않고 @Service을 이용하여 class annotation으로 달아주면 스프링은 beanFactory에 담아 두고 사용하는 곳에 @Autowired을 사용하는 곳에 해당 bean을 찾아 주입시켜 객체를 사용할 수 있게 도와준다.​1. @Autowired @Autowired는 주입하려고 하는 객체의 타입이 일치하는 객체를 loc 컨테이너 안에 존재하는 Bean을 자동으로 주입한다. ​주입 방법은 3가지가 있다.​필드 주입 (Field Injection)필드에 @Autowired 어노테이션을 붙여 주면 자동으로 의존성이 주입된다. 매.. 2024. 12. 14.
[STS/Spring Boot] STS에서 maven으로 build 하는 방법 1. package > Run As > Maven build  2. Goals 에 'package' 입력하기   3. console 창에 'BUILD SUCCESS' 뜨면 완료    +Build가 안되는 경우 해결 방법: C:\Users\윈도우계정이름\.m2  폴더 아래에 있는 모든 폴더를 삭제 후 다시 STS를 실행하면 자동으로 빌드하면서 메이븐 라이브러리를 받게 된다. 2024. 12. 12.
[서버] CRUD 란? + CRUD와 REST 1. CRUD 란?Create, Read, Update, Delete의 약어로 데이터베이스 등의 시스템에서 데이터를 관리하는 기본적인 기능을 의미한다. CRUD 개념은 웹시스템 뿐만 아니라 거의 모든 시스템에서 적용된다. 2. DB와 CRUD CRUD는 데이터베이스 명령이다. 1. Create (생성) 새로운 데이터를 생성한다. 데이터베이스에 새로운 테이블 및 객체를 생성하는 작업. 2. Read (읽기) 데이터를 조회한다. 데이터베이스에서 데이터 검색, 읽어오는 작업 3. UPDATE (갱신, 수정) 기존 데이터를 수정한다. 수정하는 것은 갱신이다. 4. DELETE (삭제) 데이터 삭제. 데이터베이스에서 레코드 삭제하는 작업. 3. REST API 와 CRUD R.. 2024. 10. 31.
[DB] MyBatis vs. JPA 백엔드에서 데이터베이스를 사용하는 프레임워크에는 가장 흔하게 MyBatis와 JPA가 있다. MyBatis와 JPA의 차이에 대해 정리해보자!   1. DB와 연동하기 위한 기술DB와 연동하기 위한 기술에는 두 가지가 있다.  (프레임워크) 1) SQL Mapper 2) ORM (Object Relational Mapping)      SQL Mapper: 개발자가 작성한 SQL 실행 결과를 객체에 매핑함.ORM (Object Relational Mapping): 객체, DB데이터를 자동으로 매핑한다  -> 두 기술은 DB에 데이터를 저장한다는 공통점을 가지지만, 서로 다른 접근 방식을 가진다.    2. MyBatis vs. JPA MyBatis 는 SQL Mapper 기술을 제공하며,JPA는 ORM .. 2024. 10. 16.
[Tomcat] '404에러' 가 발생했다면? JSP,Servlet 잘 연결해서 문제없이 작동하다가도 한번씩 이유없이(?) 에러가 나는 톰캣.. 간단하게 문제진단과 해결을 위해 정리해놓기로.. 🫥 tomcat서버 에러 문제의 대표적 5가지 원인 1. web.xml 에러 servlet등록이 잘못되어 있을 때를 말한다. servlet-name, servlet-classm url-pattern을 오타없이 정확히 기입했는지 확인하자. 2. 서블릿 어노테이션 생성한 servlet의 어노테이션에 오타가 있을 경우 서버가 시작되지 않는다. @로 시작하는 어노테이션 부분을 잘못 썼는지 다시 한번 확인해 보자. (controller에서 이부분 확인해서 오류 해결 한 경우 다수.. 2024. 10. 7.
[DB/OracleDB] SQL문 조회, 함수 정리 SELECT *FROM EMPLOYEE;--모든행 행(WHERE 이하 조건이 없으므로) 과 모든 컬럼조회   · 논리연산자 AND, OR 는 ' &&와 || ' 가 아닌 AND, OR로 사용한다.-- 부서코드가 'D6'이면서, 이름이 '유재식'인 사원의 모든 정보 조회SELECT *FROM EMPLOYEEWHERE DEPT_CODE = 'D6' AND EMP_NAME = '유재식'; · 여러 컬럼의 결과나 값을 '하나의 컬럼'으로 묶을때 ' || ' 사용한다.SELECT EMP_ID || EMP_NAME  || '사원' FROM EMPLOYEE; · 비교연산자 중 '같지않다' : != , ^=,     · LIKE 연산자: 입력한 숫자, 문자가 포함된 정보를 조회할때 사용하는 연산자   1) '_' : .. 2024. 9. 9.

TOP

Designed by 티스토리