스프링 입문을 위한 자바 객체 지향의 원리와 이해 (2)[책리뷰 & Book review]
본문 바로가기

컴퓨터공부/JSP

스프링 입문을 위한 자바 객체 지향의 원리와 이해 (2)[책리뷰 & Book review]

by Life & study 2024. 1. 26.
반응형

스프링 입문을 위한 자바 객체 지향의 원리와 이해 (2)

[책리뷰 & Book review]

책의 강자가 티스토리 글을 남긴 곳은 어디인가?

https://expert0226.tistory.com/category/%EA%B0%95%EC%A2%8C/Spring%203.0

 

'강좌/Spring 3.0' 카테고리의 글 목록

 

expert0226.tistory.com

 

순공학 객체지향 과 자바
역공학 자바와 객체지향 의 관계는 무엇인가?

순공학(Forward Engineering)과 역공학(Reverse Engineering)은 소프트웨어 개발 과정에서 중요한 역할을 하는 개념입니다.

순공학(Forward Engineering): 이는 기본적으로 

요구 사항 분석에서부터 시작하여, 설계, 구현, 테스트 그리고 유지 보수 단계를 거치는 전통적인 소프트웨어 개발 방법론을 말합니다. 객체 지향 프로그래밍과 Java에서는 클래스와 객체를 설계하고 이를 사용하여 애플리케이션을 구현하는 과정이 순공학에 해당합니다.
java

// 요구 사항: 사람의 이름과 나이를 저장하고 출력하는 기능

// 설계: Person 클래스 설계
public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void printPerson() {
        System.out.println("Name: " + name + ", Age: " + age);
    }
}


// 구현: Person 객체 생성 및 사용

public class Main {
    public static void main(String[] args) {
        Person person = new Person("John", 25);
        person.printPerson();
    }
}


역공학(Reverse Engineering): 이는 기존의 소프트웨어 제품이나 시스템을 분석하여 그 구조를 이해하고, 이를 바탕으로 새로운 시스템을 설계하거나 기존 시스템을 개선하는 방법론을 말합니다. Java에서의 역공학은 기존의 Java 코드를 분석하여 UML 다이어그램 등을 생성하거나, 코드를 이해하고 개선하는 작업을 포함할 수 있습니다.
java

// 기존의 Java 코드 분석
public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void printPerson() {
        System.out.println("Name: " + name + ", Age: " + age);
    }
}


// 위 코드를 분석하여 UML 다이어그램 생성

// Class: Person
// - Private Attributes: name (String), age (int)
// - Public Methods: Person(String, int), printPerson()


이처럼 순공학은 요구 사항으로부터 새로운 시스템을 만들어 나가는 과정을, 역공학은 기존 시스템을 분석하여 이해하고 개선하는 과정을 말합니다. 이 두 과정은 서로 보완적으로 작용하여 효율적인 소프트웨어 개발을 가능하게 합니다.

 


 

 

 

 

 

 

UML 와 역공학의 관계는 무엇인가?

 

 

역공학(Reverse Engineering)과 UML(Unified Modeling Language)은 소프트웨어 개발에서 서로 연관성을 가지는 개념입니다.

역공학은 기존의 소프트웨어 제품이나 시스템을 분석하여 그 구조를 이해하고, 이를 바탕으로 새로운 시스템을 설계하거나 기존 시스템을 개선하는 방법론입니다. 즉, 이미 작성된 코드를 분석하여 그 로직과 구조를 파악하는 과정을 말합니다.

이 과정에서 UML이 중요한 역할을 합니다. UML은 시스템의 구조와 동작을 시각화하고, 문서화하고, 소프트웨어를 설계하는 일반적인 방법을 제공하는 표준화된 범용 모델링 언어입니다.

아래의 예제는 Java 코드를 분석하여 UML 다이어그램을 어떻게 만드는지 보여줍니다:

java

// Java 코드
public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void printPerson() {
        System.out.println("Name: " + name + ", Age: " + age);
    }
}


위의 Java 코드를 분석한 후, 이를 UML 클래스 다이어그램으로 표현하면 다음과 같습니다:

-----------------
|    Person     |
-----------------
| -name: String |
| -age: int     |
-----------------
| +Person(name: String, age: int) |
| +printPerson(): void            |
-----------------


이 UML 다이어그램은 Java 코드의 구조를 시각적으로 표현하고 있습니다. 

"Person"이라는 클래스가 있고, "name"과 "age"라는 두 개의 private 필드를 가지고 있으며, 생성자와 "printPerson"이라는 메서드를 가지고 있는 것을 알 수 있습니다.

따라서, 역공학과 UML은 서로 보완적인 관계를 가지고 있습니다. 역공학을 통해 기존 코드의 구조를 이해하고, 이를 UML로 표현함으로써 더 직관적으로 시스템을 이해하고 분석할 수 있습니다. 이는 시스템의 개선 및 재설계 과정에 있어 중요한 역할을 합니다.

 

 

 

 

 

 

 

 

 

 

 

 

기술 스택 • 툴
Oracle
Java
JavaScript
JSP
Spring Framework
iBatis
MSSQL




 

 

 

 

 

iBatis , 와 mybatis의 차이점은 무엇이며 작동방식

 

iBatis와 MyBatis는 모두 Java의 ORM(Object-Relational Mapping) 프레임워크로, 객체 지향 언어인 Java와 관계형 데이터베이스의 연결을 돕습니다. 

ORM은 객체와 테이블 간의 매핑을 도와줘서 SQL 쿼리 없이도 데이터베이스 작업을 할 수 있게 해줍니다.

iBatis는 Apache의 오픈소스 프로젝트로 시작되었으나, 후에 Apache에서 더 이상 프로젝트를 진행하지 않게 되었습니다. 

그래서 iBatis의 주요 개발자들이 새로운 프로젝트인 MyBatis를 시작하게 되었습니다. MyBatis는 iBatis의 후속 버전으로 볼 수 있으며, 더 많은 기능과 개선된 성능을 제공합니다.

iBatis와 MyBatis의 주요 차이점은 다음과 같습니다:

Namespace: iBatis에서는 <sqlMap> 태그 안에 namespace가 없지만, 

MyBatis에서는 <mapper> 태그 안에 namespace가 있습니다. 

namespace는 SQL 문장의 식별자로 사용됩니다.


Dynamic SQL: MyBatis는 iBatis보다 더 강력한 동적 SQL을 지원합니다. 

iBatis에서는 <dynamic>과 <isNotEmpty> 등의 태그를 사용하지만,

 MyBatis에서는 <if>, <choose>, <when>, <otherwise>, <trim>, <where>, <set> 등의 태그를 사용합니다.



JDBC 개선: MyBatis는 iBatis보다 더 많은 JDBC 기능을 지원합니다. 

예를 들어, MyBatis는 java.sql.CallableStatement를 지원합니다.


설정과 매핑: MyBatis는 XML 외에도 Java Annotations를 이용한 설정과 매핑을 지원합니다.


작동 방식에 대한 설명과 코드 예제는 다음과 같습니다:

java

// MyBatis를 사용한 코드 예제

// 1. SqlSessionFactory 생성
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build
(Resources.getResourceAsStream("mybatis-config.xml"));


// 2. SqlSession 생성

SqlSession session = sqlSessionFactory.openSession();



// 3. 매퍼 인터페이스를 이용해 SQL 쿼리 실행

EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
Employee employee = mapper.selectEmployeeById(1);



// 4. SqlSession 닫기

session.close();


위의 코드에서 mybatis-config.xml은 MyBatis의 설정 파일이며, 

EmployeeMapper는 SQL 쿼리를 정의한 매퍼 인터페이스입니다.

이처럼 MyBatis는 SQL 세션을 생성하고, 매퍼 인터페이스를 사용하여 SQL 쿼리를 실행하며, 마지막으로 SQL 세션을 닫는 과정으로 작동합니다. 이를 통해 Java 객체와 SQL 쿼리 사이의 매핑을 쉽게 처리할 수 있습니다.

 


스프링 프레임워크를 사용하는 Java 개발에서 UML을 생성하거나 역공학을 수행하는 데 사용할 수 있는 여러 도구와 라이브러리가 있습니다.

Visual Paradigm: 이 도구는 UML 다이어그램 작성, 역공학, 순공학 등을 지원합니다. Java 코드를 분석하여 UML 다이어그램을 자동으로 생성할 수 있으며, 반대로 UML 다이어그램에서 Java 코드를 생성하는 것도 가능합니다.

 

ArgoUML: 오픈소스 UML 모델링 도구로, Java로 작성되었습니다. 클래스 다이어그램, 순차 다이어그램, 상태 다이어그램 등 다양한 UML 다이어그램을 지원합니다. 또한, Java 코드를 분석하여 UML 다이어그램을 생성하는 역공학 기능을 제공합니다.

 

Eclipse Modeling Tools: 이클립스 IDE에서 제공하는 모델링 도구 패키지입니다.

 

 EMF(Eclipse Modeling Framework), UML2, Papyrus 등 다양한 모델링 및 UML 도구를 포함하고 있습니다. 

Java 코드를 UML로, 그리고 UML을 Java 코드로 변환하는 기능을 지원합니다.


StarUML: UML과 SysML을 지원하는 모델링 도구로, Java와 C++ 코드를 분석하여 UML 다이어그램을 생성하는 역공학 기능을 제공합니다.


이외에도 IntelliJ IDEA, NetBeans 등의 IDE에서는 플러그인을 통해 UML 모델링 및 역공학 기능을 사용할 수 있습니다. 

 

이런 도구들을 활용하여 스프링 프레임워크를 사용하는 Java 프로젝트의 구조를 이해하고, 설계를 개선하는 데 도움을 받을 수 있습니다.

 

 

 

 

 

 

 

#개발자취업 #개발자기초 #개발자 #개발자분야 #개발자분류 #개발자종류 #it개발자 #서버개발자 #개발자성장 #신입개발자 #ios개발자 #개발자노트북 #개발자 되는 법 #개발 #앱개발 #웹개발 #개발분야 #it개발 #개발공부 #코딩상식 #개발공부 #개발초보

 

#개발자취업 #개발자면접 #개발자채용 #백엔드개발자 #백엔드개발자 #백엔드개발자취업 #백엔드개발 #프런트엔드개발자 #개발자상담 #백엔드 #개발자 #앱개발자 #웹개발자 #개발자팁 #앱개발자 #백엔드취업 #백엔드공부 #백엔드강의 #백엔드독학

 

#전산직면접 #면접 #면접팁 #면접관 #공공기관전산직면접 #공사면접 #면접질문 #면접할 말 #면접준비 #면접준비 #면접답변 #면접질문 #면접기출 #전화면접 #면접복장 #면접답변 #면접꿀팁 #모의면접 #면접후기 #롯데면접 #면접후기 #임원면접 #최종면접 #면접꿀팁

 

 

 

 

 

반응형

댓글