본문 바로가기

Server-DB

(10)
XML와 Annotation, 왜 Annotation을 사용하는가 XML - 결합도를 낮추고 유지보수성을 높이기 위해 xml로 설정하였으나 xml이 너무 많아지면 오히려 유지보수성이 낮아지는 아이러니한 상황 발생 - 유지보수성에 방점 - 시스템 전체에 영향을 주고 이후에 변경 가능성이 있는 것은 xml로 설정.(DBCP 등) Annotation Annotation의 정의 정의 : 주석이 선언적 프로그래밍 모델( 메타데이터) 을 지원하는 기술. 컴파일, 런타임시에 반영한다. ※ 메타데이터 : 데이터의 데이터. 데이터를 설명하기 위한 데이터 (설정 정보) ex) @Repository, @Service, @Controller, @Autowired, @Resource Annotation이 나온 이유 IT가 발전하면서 프로그램의 규모가 방대해지면서 XML이 가지는 설정정보의 양..
JDBC, JPA, MyBatis? | Java와 DB 간 API 정리 Java에서 DB를 다룰 때 다양한 방식들이 있어서 이를 정리해보고자 한다. 1. JDBC 가장 기본적인 방식은 JDBC(Java Database Connectivity)이다. 사실 모든 DB를 다루는 기술은 여기서 시작되었다. DAO로 DB와의 연결을 관리하고, DB 간 통신 할 때 객체를 다루어주는 DTO, VO가 존재한다. 헌데 이 방식은 문제점이 존재했는데, 바로 Java 코드 내에 SQL쿼리문이 직접적으로 작성되었다는 것이다. 그래서 이를 타파하기 위해 2가지 방식이 생겨났다. 하나는 자주 쓰이는 SQL 쿼리문을 미리 정해놓고 사용하는 방식, 또 다른 하나는 SQL문이 아니라 DB 자체를 맵핑해놓고 사용하는 방식이다. 전자는 쿼리문, 후자는 DB를 맵핑하는 것으로 이해하면 된다. 2. SQL M..
자바 웹기술 #2. 스프링 그리고 스프링 부트 앞서 말한 바와 같이, 모델2의 패턴으로 웹 어플리케이션을 구성하다 보면 공통되는 부분이 나타난다. 이렇게 반복되는 부분을 하나의 틀로 만든것이 프레임워크이고, 그 중 대표적인 것이 스프링 프레임워크이다. 반복되는 부분을 틀로 만들 때, 어떠한 사상과 철학이 들어가게 된다. 스프링 프레임워크의 사상은 DI, IoC, AOP로 요약할 수 있다. 스프링을 사용하기 이전에는 어떠한 로직을 만들 때 매번 객체를 만들어주어야 했다. 예를 들어, 서블릿과 JSP로 웹 프로그래밍을 할 경우, DB와 연결해줄 DAO를 만들 때 마다 매번 새로운 객체를 만들어서 로직을 짰다. 이 방식의 문제점은, 사용하던 DB를 다른 DB로 바꿀경우 DAO 역시 전부 다 수정해주어야 한다는 점이다. 예를 들어, 오라클을 사용하다가 My..
자바 웹기술 #1. 서블릿과 JSP 그리고 모델2 CGI(common gateway interface)의 한계, 펄이 가진 한계로 인해, 웹 어플리케이션 그리고 Java를 통한 웹 프로그래밍이 대두되었다. 이러한 시기에 Java로 웹을 다루는 것에 대한 많은 고민들이 이어졌고, 그에 따라 나온 것이 Servlet이라는 도구이다. Servlet 그리고 JSP의 차이점은, 서블릿은 Java 안에 HTML이 존재하는 구조이며, JSP는 HTML 안에 Java가 존재하는 구조라는 것이다. 또한 JSP는 서블릿에서 파생되어진 것이기 때문에, JSP를 실행할 경우, 이것이 Servlet(Java) 코드로 변환되고, 이것을 실행한 결과물인 HTML만 최종적으로 브라우저에서 보게 된다. Servlet에 관해서는 3가지 내용만 기억하면 된다. URL매핑, DB연동, 포..
Django를 어렵게 만드는 ORM에 관해 | 엑셀양식을 만든다고 생각해보자 Node.js와 Django는 스타트업 소프트웨어 엔지니어에서 주로 사용되는 웹프레임워크다. 헌데 Node를 쓰는 상황이 있고, Django를 쓰는 상황이 있는데, 특히 빅데이터 분석이 필요하거나 DB기능이 중요한 경우에는 Django를 사용하게 된다. 그러나 Django에 있어서 난이도를 높히는 요소들이 몇가지 있을 수 있으나, 그 중에서 가장 까다로운 것은 ORM이 아닐까한다. Url Mapping이나 Class-based View를 사용하는 것은, 사실은 어느 웹프레임워크나 똑같기 때문에 Django만의 차별점이 있다면 ORM이 아닐까 싶다. 이 ORM이란 어떻게 이해해야할까 Django를 처음 사용할 때 했던 오해는 데이터가 models.py에 저장된다고 생각한 점이다. 헌데 이를 잘 생각해보니,..
MongoDB를 관계형 데이터 베이스처럼 사용하는 법 MongoDB는 대표적인 NoSQL로서 기존에 사용하던 DB처럼 사용하고 싶은데, 그러지 못할 때 다소 아쉬운 부분이 있다. 그럴 때, 한 가지 편법이 있다. MongoDB에 들어가서, 인덱스를 담당하는 Collection을 별도로 만든 뒤, 데이터를 DB에 저장할 때 마다 그 때 그 때 해당 인덱스를 업데이트 해주면 된다. // /add경로로 POST 요청을 하면, 그 내용을 DB 폴더에 저장 app.post('/add', function(req, res){ // /write에서 글 작성 후 사용자에게 보여줄 부분 res.send('전송완료') // 글번호를 붙혀서 post collection에 작성한 내용을 저장하는 부분 db.collection('counter').findOne({name : '게시..
DRF(Django Rest Framework)를 사용하는 이유 Django와 함께 DRF를 사용하여, 프로젝트를 진행하다가 문득, DRF를 왜 사용해야 하는가에 대해서 생각을 정리할 필요를 느꼈다. 일반적으로 Django만 사용하는 경우에는, DB에서 데이터를 꺼내오면 Queryset의 형태로 데이터가 주어진다. 이 경우, 프론트까지 함께 개발하는 경우에는 크게 상관이 없다. 그러나 프론트를 별도로 개발하거나, React 혹은 다른 프론트에서도 이용하게될 API의 경우에는 Queryset형태를 피해야 한다. 이 때 Django와 함께 사용되는 것이 DRF이다. rest_framework를 사용하게 되면, view와 model 사이에 serializer라는 것을 사용하게 된다. View에서 Serializer를 가져와서 사용하게 되면 Model에서 꺼낸 데이터를 Qu..
CRUD를 중심으로 express와 django 웹프레임워크를 비교해본다 어느 웹 프레임워크를 사용하건 간에, CRUD를 중심으로 웹서비스를 구현하는 건 모두 똑같다. 그래서 하나의 웹프레임워크를 사용하는 것에 익숙해지면, 다른 웹프레임워크도 쉽게 익숙해질 수 있다. API를 설계하는 과정은 결국, GET/POST/PUT/DELETE 요청(읽기, 쓰기, 수정, 삭제)에서 모든 기능이 나오기 때문이다. 다만, 어떤 언어를 기반으로 하는가, 그리고 어떤 프레임워크를 중심으로 웹서비스를 구축하는가에 따라서 세부적인 부분들이 달라진다. 각 언어별로 대표적인 프레임워크들이 존재하지만, 개인적으로는 node.js와 python 환경의 프레임워크를 선호한다. java나 php 계열의 프레임워크가 안정성이 뛰어나다고 생각하지만, 안정성 이전에 스타트업쪽에 관심이 많은 나로서는, 서비스를 얼..