@Entity @Getter public class Hello { @Id @GeneratedValue private Long id; @NotNull private String name; } int, long이 아닌 Wrapper Class인 Long을 쓰는 이유는 null값을 사용할 수 있기 때문이다. primitive type은 default값이 0으로 지정되어 있어 null이 될 수 없다. 예를 들어 id가 없는 경우 나타낼 수 없게 된다. null값을 정확하게 처리하기 위해서는 Wrapper Class를 사용하는 것이 더 좋은 방법이다. Wrapper Class의 Long과 Integer 중에서 Long을 쓰는 이유는 표현범위 때문이다. Long이 Integer보다 월등히 많은 수를 표현할 수 있기..
REST - 하나의 URI는 하나의 고유한 리소스를 대표하도록 설계된다는 개념에 전송방식을 결합해서 원하는 작업을 지정한다. - URI + GET/POST/PUT/DELETE - 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표 - HTTP URI를 통해 제어할 자원을 명시하고, HTTP Method(get/post/put/delete)을 통해 해당 자원을 제어하는 명령을 내리는 방식의 아키텍처 REST 구성 - 자원(Resource) - URI - 행위(Verb) - HTTP Method - 표현 (Representations) 잘 표현된 HTTP URI로 리소스를 정의하고 HTTP Method로 리소스에 대한 행위를 정의한다. 리소스는 JSON이나 XML 같은 여러 가지 언어로 표현할 ..
MyBatis 개요와 특징 - MyBatis는 java object와 sql문 사이의 자동 mapping 기능을 지원하는 ORM Framework. - sql을 별도의 파일로 분리해서 관리 - object - sql 사이의 parameter mapping 작업을 자동으로 해준다. - 익숙한 sql을 그대로 이용하면서 jdbc 코드 작성의 불편함을 제거해주고, 도메인 객체나 VO객체를 중심으로 개발이 가능 특징 - 쉬운 접근성과 코드의 간결함 - sql문과 프로그래밍 코드의 분리 - 다양한 프로그래밍 언어로 구현 가능 Mybatis의 주요 component MyBatis 설정 파일 (sqlMapConfig.xml) 데이터베이스의 접속 주소 정보나 객체의 alias, Mapping 파일의 경로 등의 고정된 ..
AOP(Aspect Oriented Programming) 관점 지향 프로그래밍 - 핵심 관심사항과 공통 관심사항 - 공통 모듈을 손쉽게 적용 가능 - 관심사의 분리 즉, 핵심적인 기능에서 부가적인 기능을 분리 - 분리한 부가기능을 Aspect라는 독특한 모듈 형태로 만들어서 설계하고 개발하는 방법 Spring AOP 용어 1. Target - 핵심 기능을 담고 있는 모듈로 target은 부가기능을 부여할 대상이 됨. 2. Advice - 어느 시점(메소드 수행전/후, 예외발생 후)에 어떤 공통 관심 기능(Aspect)를 적용할지 정의한 것. Target에 제공할 부가기능을 담고 잇는 모듈 3. JoinPoint - Aspect가 적용 될 수 있는 지점(method, field) - 즉 target 객체..