공간정보아카데미

ubiaccess-framework

minjava 2025. 8. 22. 17:07

- Node.js 기반의 서버 프레임워크 (ubiaccess-framework = Express.js 기반 미니 프레임워크)

- Spring 같은 대형 프레임워크보다는 훨씬 단순하게, Express.js를 확장해서 DB 연결, 컨트롤러 관리, 라우팅 등을 빠르게 만들 수 있도록 구성된 구조

 

  • Controller로 라우팅을 관리
  • Database/Helper로 DB 쿼리 관리
  • util로 응답 포맷·공용 기능 관리
  • Express + MySQL을 쓰지만, Java Spring 같은 어노테이션 느낌(@Controller, @RequestMapping)을 흉내냄.
  • DB 쿼리 실행 → 데이터 가공 → 응답 포맷 통일을 도와주는 구조

 

주요 구성 요소

 

1. loader

  • 서버를 처음 시작할 때, 각종 컨트롤러, 모델, 설정 파일을 불러옴
  • 예: controller_loader.js, database_loader.js
    → Express 라우터에 자동으로 @Controller / @RequestMapping 같은 데코레이터 기반 라우트를 등록

2. controllers

  • HTTP 요청을 처리하는 부분.
  • 예: person.js
  • 컨트롤러는 라우터 역할을 하고, DB 조회·비즈니스 로직을 호출해서 결과를 리턴

3. database

  • database_mysql.js 같은 DB 연결 모듈.
  • 커넥션 풀을 만들고, SQL 실행을 도와줍니다.
  • query()나 execute()를 통해 실제 SQL을 DB에 날림

4. util

  • 공용 유틸리티 모듈.
  • 예:
    • util/util.js → sendRes(), sendError() 같은 응답 포맷 도우미
    • util/param.js → 파라미터 파싱, SQL where/order/page 구문 생성
    • util/controller_helper.js, database_helper.js, response_helper.js → 반복되는 DB/응답 로직을 재사용하기 쉽게 만든 클래스들

5. database/sql

  • SQL 템플릿 모아둔 곳.
  • 예: person-sql.js
  • 컨트롤러에서 personSql.test_person_list 같은 식으로 불러 씀.
  • SQL은 하드코딩하지 않고 여기서 관리.

6. index.js

  • 앱 실행 진입점.
  • Express 서버를 띄우고, 포트(config.server.port) 설정을 불러서 시작
  • controller_loader를 실행시켜 라우팅을 자동으로 연결

 

주요 구성 요소

 

  • config/
    서버 설정, DB 설정, 소켓 설정 등이 들어감 (config.js, sql_config.js 등).
    → 환경 세팅을 바꾸고 싶을 때 수정.
  • controllers/
    요청을 처리하는 곳.
    예: person.js, customer.js → /person, /customer API 엔드포인트 담당.
    → 새로운 API 만들고 싶으면 여기 xxx.js 파일 추가.
  • database/
    DB 연결 모듈. 보통 database_mysql.js 같은 기본 DB 핸들러가 들어 있음.
    → DB 커넥션, 쿼리 실행.
  • sql/
    SQL 템플릿 모아두는 곳.
    예: person_sql.js, customer-sql.js
    → 컨트롤러에서 require('../database/sql/person-sql') 식으로 불러옴.

 

===> gpt가 그려준 구조 다이어그램 ===>

 

 

'공간정보아카데미' 카테고리의 다른 글

변수 vs 객체 / stack vs heap  (0) 2025.09.01
Spring - DI - Container  (0) 2025.09.01
java - MyBatis  (0) 2025.08.29
Session, Cookie, Cache  (0) 2025.08.26
Vue - Pinia  (0) 2025.08.25