본문 바로가기

분류 전체보기

(433)
AOP(Aspect Oriented Programming) # AOP 업무 로직을 포함하는 기능을 핵심기능(Core conecrens) 핵심기능을 도와주는 부가적인 기능(로깅, 보안 등)을 부가 기능(Cross-cutting Concerns)이라고 부른다. 객체 지향의 기본 원칙을 적용하여도 핵심기능에서 부가기능을 분리해서 모듈화하는 것은 매우 어렵다. 핵심기능과 부가기능을 별도로 관리하여 런타임 시에 처리할 수 있도록 지원하는 것이 AOP AOP는 애플리케이션에서 관심사의 분리(기능의 분리) 핵심적인 기능에서 부가적인 기능을 분리 분리한 부가기능을 Aspect라는 독특한 모듈 형태로 만들어서 설계하고 개발하는 방법 OOP를 적용하여도 핵심 기능에서 부가기능을 쉽게 분리된 모듈로 작성하기 어려운 문제점을 AOP가 해결 AOP는 부가기능을 애스펙트(Aspect)로..
Dynamic SQL # Dynamic SQL 검색 조건에 따라 검색해야 하는 SQL문이 달라지기 때문에 이를 처리하기 위해서 동적 SQL이 사용됨 MyBatis 표현식 if, trim(where, set), choose(when, otherwise), foreach 동적 SQL 작성 시 유의사항 Mybatis 구문을 이용하여 SQL문이 실행 시에 변경되기 때문에 모든 케이스에 대해 테스트가 이루어져야 함 동적 SQL문이 없는 상태에서 정상적인 실행 확인 후에 동적 SQL을 추가해서 개발 # 예시 if를 활용한 동적 구문 if를 통해 쿼리문에 조건을 걸 수 있다. 파라미터 타입 안에 다른 타입(클래스)가 포함되어 캡슐화를 이용할 경우 .(연산자)를 통해 접근 가능 SELECT * FROM BLOG WHERE state='AC..
Mapper XML 파일 # Mybatis Mapper XML 파일 SQL 문을 저장하는 존재를 매핑파일이라고 함 JDBC 코드에 비하면 코드가 95% 감소 Mybatis는 SQL 작성에 집중할 수 있도록 만들어짐 # XML Mapper 작성 DAO 클래스가 작성되면 이를 사용하는 SQL문 작성이 필요 XML로 작성된 Mapper의 위치 결정 XML Mapper 파일을 작성하고 필요한 DTD 추가(템플릿 팡리 사용) SQL 작성 # Select Mybatis에서 가장 많이 사용하는 엘레멘트 어플리케이션은 데이털르 수정하는 기능보다 데이터 조회를 주로 함 Mybatis는 데이터 조회하는 기능에 집중함 SELECT * FROM PERSON WHERE ID = #{id} 위 쿼리 이름은 selectPerson 파라미터는 int이고 결..
Spring Mybatis # MyBatis의 개요 Mybatis는 자바 오브젝트와 SQL 문 사이의 자동 Mapping 기능을 지원하는 Object Mapper이다. MyBatis는 SQL을 별도의 파일로 분리해서 관리하게 해주며, 객체-SQL 사이의 파라미터 mapping 작업을 자동으로 해주기 때문에 많은 인기를 얻고 있는 기술이다. Mybatis는 Hibernate나 JPA(Java Persistence API) 처럼 새로운 DB 프로그래밍 패러다임을 익혀야하는 부담이 없이 개발자가 익숙한 SQL을 그대로 이용하면서 JDBC 코드 작성의 불편함도 제거해주고, 도메인 객체나 VO 객체를 중심으로 개발이 가능하다는 장점이 있다. # Mybatis의 특징 1) 쉬운 접근성과 코드의 간결함 가장 간단한 퍼시스턴스 프레임워크 XML..
프로그래머스 타겟 넘버 https://programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 자바 공부 겸 프로그래머스 탐색 Level2의 비교적 쉬운 난이도 문제를 풀어봤다. 일반적인 DFS 문제로 접근하면 되며 체크 idx에 도달하면 값을 비교하여 정답을 count 하면 된다. import java.util.*; public class Solution { int glb_answer = 0; int glb_target = 0; public void print(int n){ System.out.pri..
Context 분리와 전략 # Servlet Context DispatcherServlet - 웹의 요청을 최초로 접수(프론트 컨트롤러) DispatcherServlet - 설정파일을 이용해서 ServletContext(스프링 컨테이너) 로딩 Spring MVC와 관련있는 빈을 설정 # Root Context Spring MVC와 분리되어 빈을 관리하고 싶을 때 사용 일반적으로 Servlet Context와 Root Context 로 분리하여 운용 # Root Application Context 전체 계층 구조에서 최상단에 위치한 컨텍스트 서로 다른 서블릿 컨텍스트에서 공유해야 하는 Bean들을 등록해놓고 사용 웹 어플리케이션 전체에 적용가능한 DB 연결, 로깅 기능 등에 이용 Servlet Context에 등록된 Bean 이용 ..
Spring Data Access 기술과 DataSource d# DAO 디자인 패턴 비즈니스 Layer(서비스)와 Low 레벨의 데이터 엑세스 작업을 분리 DAO Layer는 DB와 비즈니스 Layer 가운데 위치하여 CRUD 작업을 수행한다 # 데이터 액세스 기술 1) JDBC: 자바에서의 관계형 DB 접속 기술, JDK 레벨에서 지원하며 다른 고수준 기술의 기반 2) Spring JDBC: Spring 자체적으로 지원하는 JDBC Wrapper 3) Mybatis: 3rd party 자바 관계형 DB 매핑 Library, 자바 오브젝트와 SQL문을 자동으로 맵핑(SQL Mapper) 4) JPA: Java ORM 표준 인터페이스(자료형을 맵핑 시켜주는 기술), 과거에는 자료형과 컬럼을 수동으로 맵핑 5) HIbernate: Java ORM 구현체 # Spri..
JUnit4 & Spring Test # JUnit JUnit은 Java에서 독립된 단위테스트(Unit Test)를 지원해주는 프레임워크이다. JUnit은 보이지 않고 숨겨진 단위 테스트를 끌어내어 정형화시켜 단위 테스트를 쉽게 해주는 테스트 지원 프레임워크 CF) 단위테스트(Unit Test) 란? 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는 지 검증하는 절차, 즉 모든 함수와 메소드에 대한 테스트 케이스를 작성하는 절차를 뜻한다. 특징 가장 많이 사용하는 Unit Test 단정(Assert) 메서드로 테스트 케이스의 수행 결과를 판별함(assertEquals(예상 값, 실제 값)) Junit4 부터는 테스트를 지원하는 어노테이션을 제공(@Test, @Before, @Atter) 각 @Test 메서드가 호출할 때마다 새로운 인스턴..