본문 바로가기
  • 저희는 평생 개발할 운명이걸랑요

Tech.log/데이터베이스9

[ORM(Object Relational Mapping)] ORM(Object Relational Mapping) 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용하기 때문에 모델 간에 불일치가 존재한다. ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다 ORM의 장 단점 장점 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와준다. 재사용 및 유지보수의 편리성이 증가한다. DBMS에 대한 종속성이 줄어든다. 단점 프로젝트의 복잡성이 커질경우 난이도 또한 올라갈 수 있다. 잘못 구현된 경우에 속도 저하 및 심각할 경우 일관성이 무너지는 문제점이 생길 수 있다. 프로시저가 많은 시스템에선 ORM의 객체 .. 2021. 6. 4.
[SQL Injection] SQL Injection 코드 인젝션의 한 기법으로 클라이언트의 입력값을 조작하여 서버의 데이터베이스를 공격할 수 있는 공격방식을 말한다. INSERT INTO students (이름) VALUES ('학생 이름'); 저 학교에서 입력한 명령은 다음과 같을 것이다. INSERT INTO students (이름) VALUES ('Robert'); DROP TABLE students; --'); 첫 번째 줄에서는 Robert라는 학생이 입력되었지만, 두 번째 줄에서 학생들의 데이터가 있는 테이블을 제거한다. 그리고 세 번째에서는 뒤에 오는 내용을 모두 주석 처리한다. 결과적으로 ‘모든 학생 기록을 삭제한다.’라는 뜻의 명령문이 완성된다. 논리적 오류에 의한 공격 SELECT user FROM user_tab.. 2021. 6. 4.
[NoSQL] NoSQL 보통 'Not Only SQL'의 줄임말로 해석하며 기존의 관계형 DBMS가 갖고있는 특성 뿐만 아니라 다른 특성들을 부가적으로 지원한다. 관계형 데이터베이스 시스템의 주요 특성을 보장하는 ACID(Atomic, Consistency, Integrity, Duarabity)특성을 제공하지 않는, 그렇지만 뛰어난 확장성이나 성능 등의 특성을 갖는 수많은 비관계형, 분산 데이터 베이스들이 등장했고, 이때부터 NoSQL이라는 용어가 보편적으로 사용되었다다. NoSQL특징 - 거대한 Map으로서 key-value 형식을 지원한다. NoSQL은 관계를 정의하지 않는다.대용량 데이터 저장을 한다. - 분산형 구조를 통해 여러대의 서버에 분산하여 저장하고 상호복제하여 데이터 유실이나 서비스 중지에 대비한다.. 2021. 5. 22.
[Statement VS Prepared Statement] Statement 와 Prepared Statement - SQL을 실행할 수 있는 객체이다. - 가장 큰 차이점은 캐시 사용여부이다. 1) SQL 실행 단계 (1) 쿼리 문장 분석 (2) 컴파일 (3) 실행 Statement String sqlstr = "SELECT name, memo FROM TABLE WHERE name = " + num Statement stmt = conn.credateStatement(); ResultSet rst = stmt.executeQuery(sqlstr); - 쿼리문을 수행할 때마다 SQL 실행 단계 1) ~ 3)의 과정을 거침 - SQL문을 수행하는 과정에서 매번 컴파일을 하게 때문에 성능상 이슈 발생 - 실행되는 SQL 문을 확인 가능 사용해야할 때 (1) Dyn.. 2021. 5. 22.