■ JVM 이란?

 

Java Virtual Machine의 줄임말이며 Java byte code를 OS에 맞게 해석해주는 역할을 합니다. Java Compiler는 .java 파일을 .class 라는 Java byte code로 변환시켜 줍니다. Byte code는 기계어가 아니기때문에 OS에서 바로 실행되지 않습니다. 이때 JVM은 OS가 Byte code를 이해할 수 있도록 해석해줍니다. 하지만 JVM의 해석을 거치기 때문에 c언어같은 네이티브 언어에 비해 속도가 느렸지만 JIT (Java In Time) 컴파일러를 구현해 이점을 극복했습니다. Byte Code는 JVM 위에서 OS상관없이 실행된다. 이런 점이 Java의 가장 큰 장점이라고 할수 있습니다. OS에 종속적이지 않고 Java 파일 하나만 만들면 어느 디바이스든 JVM 위에서 실행 할 수 있습니다. JVM은 크게 Class Loader, Runtime Data Areas, Excution Engine 3가지로 구성되어 있고 자세한 설명은 아래에 이이서 하겠습니다.

 

 

 

■ JVM 구조

 

- Class Loader

RunTime 시점에 클래스를 로딩하게 해주며 클래스의 인스턴스를 생성하면 클래스 로더를 통해 메모리에 로드하게 됩니다.

 

- Runtime Data Areas

JVM이 프로그램을 수행하기 위해 OS로 부터 별도로 할당 받은 메모리 공간을 말하며, Runtime Data Areas는 크게 5가지 영역으로 나눌 수 있습니다.

 

- Execution Engine

Load된 Class의 ByteCode를 실행하는 Runtime Module이 바로 Execution Engine입니다. Class Loader를 통해 JVM 내의 Runtime Data Areas 에 배치된 바이트 코드는 Executin Engine에 의해 실행되며, 실행 엔진은 자바 바이트 코드를 명령어 단위로 읽어서 실행합니다.

최초 JVM 이 나왔을 당시에는 Interperter방식(한 줄씩 해석하고 실행)이였기 때문에 속도가 느리다는 단점이 있었지만 JIT complier 방식을 통해 이 점을 보완했습니다. JIT는 ByteCode를 어셈블러 같은 NativeCode로 바꿔서 실행이 빠르지만 역시 변환하는데 비용이 발생합니다. 이 같은 이유 때문에 JVM은 모든 코드를 JIT Compiler 방식으로 실행하지 않고 Interpreter 방식을 사용하다 일정한 기준이 넘어가면 JIT Compiler 방식으로 실행합니다.

 

 

출처) https://medium.com/@lazysoul/jvm-%EC%9D%B4%EB%9E%80-c142b01571f2

'IT 용어 정리' 카테고리의 다른 글

Ioc/DI 란?  (0) 2019.10.09
Spring Boot 란?  (0) 2019.10.04
DAO 와 DTO 란?  (0) 2019.09.26
MyBatis 란?  (0) 2019.09.26
NoSQL 이란?  (0) 2019.09.17

출처 ) https://genesis8.tistory.com/214

 

 

■ DAO란 무엇인가

 

Data Access Object 의 줄임말로, 말그대로 DB에 대한 접근을 DAO가 담당하기 위해 조회하거나 조작되는 기능을 한다. 

이 이상의 긴설명은 불필요할 것으로 보인다.

 

- DAO의 클래스 예제

//DB와 연결할 Connection을 가져온다.

//어떤 DB를 사용할 것이며, 어떤 드라이브와 로그인 정보를 사용할 것인가.

//작업이 끝나면 사용한 리소스를 시스템에 돌려준다.

public class TestDao {

 

public void add(DTOBean dto) throws ClassNotFoundException, SQLException{

Class.forName("com.mysql.jdbc.Driver");

 

Connection c= DriverManager.getConnection("jdbc:mysql://localhost/springbook", "spring", "book");

 

PreparedStatement ps = c.prepareStatement("insert into users(id,name,password) value(?,?,?)");

 

ps.setString(1,  dto.getName());

ps.setInt(2,  dto.getValue());

ps.setString(3,  dto.getData());

 

ps.executeUpdate();

 

ps.close();

c.close();

 }

}

 

 

 

■ DTO란 무엇인가

 

Data Transfer Objet의 줄임말이다. VO (Value Object) 로 바꿔서 말할 수 있는데 계층간 데이터 교환을 위한 자바빈즈를 말한다. VO와 DTO의 차이점은 VO는 read only의 속성을 가진다.

 

- DTO 클래스 예제

 

public class DTObean {

 

  private String name;

 

  private String age;

 

  private String phoneNo;

 

  public String getName() {

    return name;

  }

 

  public String setName(String name) {

    this.name = name;

  }

 

  public String getAge() {

    return age;

  }

 

  public String setAge(String age) {

    this.age = age;

  }

 

  public String getPhoneNo() {

    return phoneNo;

  }

 

  public String setPhoneNo(String phoneNo) {

    this.phoneNo= phoneNo;

  }

 

}

 

 

 

 

 

 

 

 

'IT 용어 정리' 카테고리의 다른 글

Spring Boot 란?  (0) 2019.10.04
JVM 이란?  (0) 2019.09.30
MyBatis 란?  (0) 2019.09.26
NoSQL 이란?  (0) 2019.09.17
node.js 란 무엇인가  (0) 2019.09.14

출처 ) https://m.blog.naver.com/PostView.nhn?blogId=wwwkang8&logNo=220989381100&proxyReferer=https%3A%2F%2Fwww.google.com%2F

 

 

■ Mybatis 란 무엇인가?

객체지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 보다 쉽게 도와주는 프레임워크이다.

관계형 데이터 베이스 프로그래밍을 하기위해 JDBC를 제공받는다. 

 

 

■ Mybatis 의 특징

1. SQL문이 코드로부터 완전히 분리된다. 기존에는 DAO파일에 모든 SQL문을 작성하였다. 하지만 Mybatis에서는 Mapper 파일에 SQL코드를 입력해놓고 DAO파일에서 필요할 때마다 가져와서 사용할 수 있다.

 

2. Mapper 파일에서만 SQL코드를 입력하고 나중에 SQL코드를 변경할 때 이곳에서 유지보수만 하면 DAO에서는 아무런 영향을 받지 않는다. DAO에서는 Mapper파일에서 작성된 SQL 코드만 갖다 쓰기만 하면 된다.

 

 

■MyBatis의 구성
1. MyBatis 경설정 파일(SqlSessionConfig.xml) MyBatis가 JDBC 코드를 실행하는데 필요한 전반에 걸친 세팅을 한다
- TypAlias 설정 : 사용할 모델 클래스에 대한 별칭 설정. <typeAlias>
-  DB 연동을 위한 설정 : DataBase에 어떻게 접속할 것인지에 대한 설정. <enviroment>
- Mapper 설정 파일 등록 : 매핑 설정이 어디있는지. <mapper>

2. Mapper 설정 파일(member.xml, company.xml) : Sql문과 관련된 설정을 하는 파일로서 MyBatis 설정파일(SqlSessionConfig.xml)에 등록을 하여야 한다.
- 주요 구성 요소
         1) SQL문 등록 태그
               - SQL문 태그의 구성 요소 : Parameter, Result, ,SQL문 등록
               - SQL 태그 : insert, delete, update, select
               - 공통 SQL문 설정 태그 : <sql>
          2) select 결과 처리 설정
               - <resultMap>

 

 

 

 

 

 

 

 

 

 

'IT 용어 정리' 카테고리의 다른 글

JVM 이란?  (0) 2019.09.30
DAO 와 DTO 란?  (0) 2019.09.26
NoSQL 이란?  (0) 2019.09.17
node.js 란 무엇인가  (0) 2019.09.14
spring MVC 와 DispatcherServlet 의 정의  (0) 2019.09.14

출처) https://gangnam-americano.tistory.com/30

 

■ NoSQL 이란?

NoSQL이란 Not Only SQL의 약자로 기존 관계형 데이터베이스(RDBMS)와는 다른형태의 데이터 저장기술을 의미한다.

기존의 RDBMS는 테이블형식의 row와 column 형태로 데이터가 저장되며 foriegn key를 이용하여 테이블, 데이터간의 관계를 정의하며 join을 통해 데이터를 조회할 수 있다.

NoSQL은 기존의 정적인 구조의 RDBMS보다 융통성있는 형태의 데이터 구조를 사용하고 있으며, 분산 저장 환경에 용이하여 데이터 저장 및 검색(scan) 작업에 있어 뛰어난 성능을 보인다. 단순한 데이터 검색에 용이한 key/value 형태는 응답속도나 처리효율에 큰 강점을 지니고 있어 빅데이터 환경에 특화되어 있다고 볼 수 있다.

NoSQL은 이러한 RDBMS와는 다른 형태의 저장 구조를 가지며, 크게 4가지 특성에 따라 NoSQL을 분류할 수 있다.

 

■ NoSQL의 종류

저장되는 데이터 구조에 따라 NoSQL은 다음과 같이 분류된다.

 

Key-Value Store

ey와 value로 이뤄진 간단한 데이터 구조로, 다른 형태 구조의 NoSQL이라도 기본적으로 대부분의 NoSQL에서는 key/value의 개념을 가진다. 기본적인 형태로 value에 String, Integer, List, Hash 등의 기본 자료형이 해당된다. 이러한 데이터 구조는 속도가 빠르며, 분산저장 환경에 용이하여 key에 대한 엑세스 속도는 빠르지만 검색(scan)에는 취약한 특징이있다.

 

대표적인 DB에는 Redis, Memcached 등이 있다.

 

Wide Column Store

Column Oriented Database 혹은 Column Family Oriented Database라고 불리는데, 일반적인 key/value의 형태의 데이터 구조에서 하나의 key에 하나의 value만 저장하는 단점을 극복하기 위해 value에 해당하는 값을 여러개의 Column형태로 저장하며 이 묶음을 Column Family라고 한다. 데이터마다 다른 스키마를 가질 수 있으며 이 점은 Document Store와 비슷하다고 볼 수도 있다. 또한 이러한 Column Oriented형태는 우리가 많이 사용하는 RDBMS와 많이 유사한 형태이다.

 

대표적인 DB에는 HBase, Cassandra 등이 있다.

 

Document Store

Document형태로 데이터가 저장되는데 여기서 말하는 Document는 JSON, XML등을 말하며 Column Oriented와 같이 스키마가 유동적인 것이 특징이다. 

 

대표적인 DB로는 MongoDB, CouchDB 등이 있다.

 

- Graph DB

데이터를 노드(node)간의 관계로 표현한 Database를 말한다.

 

대표적인 DB로는 Neo4j, OrientedDB 등이 있다.

 

'IT 용어 정리' 카테고리의 다른 글

DAO 와 DTO 란?  (0) 2019.09.26
MyBatis 란?  (0) 2019.09.26
node.js 란 무엇인가  (0) 2019.09.14
spring MVC 와 DispatcherServlet 의 정의  (0) 2019.09.14
front end와 back end의 정의  (0) 2019.09.13

+ Recent posts