전체 글

전체 글

    SpringMVC - [ REST API와 Ajax ]

    1. JSON JSON(Java Script Object Notation)은 자바 스크립트 객체 표기법으로 아래와 같이 표기한다. { 속성명1 : 속성값1, 속성명2 : 속성값2, ... } JS객체를 서버로 전송하기 위해선 직렬화(=문자열로 변환)가, 서버가 보낸 데이터(JSON)를 JS객체로 변환할 때는 역직렬화가 필요하다. 데이터를 텍스트 즉 문자열로 바꿀 땐 JSON.stringify()를, JSON 문자열을 객체로 변환할 때는 JSON.parse() 를 사용한다. JS 객체 -> {name:"John", age:30} >> JSON.Stringify() >> String -> '{"name";"John", "age":30}' 2. Ajax Ajax(Asynchronous javascript an..

    SpringMVC - [ REST API와 Ajax ]

    SpringMVC - [ SQL문 실행 로그 찍기 ]

    1. pom.xml 파일에 아래 dependency 추가 https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1/1.16 2. resources 폴더 아래 파일 2개 추가 1) log4jdbc.log4j2.properties log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator 2) logback.xml 3. root-context.xml 파일 수정 driverClassName과 url을 아래 코드로 수정 그러면 로그에 이런 식으로 실행된 sql문이 찍힌다! 참조 https://fastcampus.co.kr/dev_academy..

    SpringMVC - [ SQL문 실행 로그 찍기 ]

    SpringMVC - [ MyBatis 동적 쿼리 ]

    1. 과 공통 부분을 로 정의하고, 로 포함시켜 재사용할 수 있다. 예를 들어 아래와 같이 두 개의 sql문이 있을 때 SELECT bno, title, content, writer, view_cnt, comment_cnt, reg_date FROM board WHERE bno=#{bno} SELECT bno, title, content, writer, view_cnt, comment_cnt, reg_date FROM board ORDER BY reg_Date, DESC, bno DESC LIMIT #{offset}, #{pageSize} 이런 식으로 공통 부분을 로 빼내어 사용할 수 있다. SELECT bno, title, content, writer, view_cnt, comment_cnt, reg_..

    SpringMVC - [ MyBatis ]

    1. MyBatis란? MyBatis란 SQL Mapping Framework로, 자바 코드로부터 SQL문을 분리해서 관리할 수 있다. 매개변수 설정과 쿼리 결과를 읽어오는 코드를 제거해줘서 생산성 향상 & 유지 보수 편리의 장점이 있다. 원래 왼쪽과 같이 작성했던 코드를 오른쪽과 같이 분리해서 쓸 수 있다. 2. SqlSession 1) SqlSessionFactoryBean, SqlSessionTemplate SqlSessionFactory가 SqlSession을 생성해서 제공하고, SqlSession이 SQL명령을 수행하는 데 필요한 메서드를 제공한다. 앞 선 두 개는 인터페이스이고, 이를 각각 구현한 게 SqlSessionFactoryBean, SqlSessionTemplate이다. SqlSess..

    SpringMVC - [ MyBatis ]

    Spring MVC - [ 서비스 계층의 분리 / Transactional ]

    1. @Transactional로 Transaction 적용하기 DAO 에서는 connection 얻을 때 아래와 같이 수정 필요 AOP를 이용해서 핵심 기능과 부가 기능을 분리한다. 원래는 아래와 같은 코드를 @Transactional 애노테이션을 붙이고, 이렇게 핵심 로직만 남기고 분리할 수 있다. @Transactional(rollbackFor = Exception.class) // Exception만 Rollback @Transactional // RuntimeException, Error만 rooback 참고로 @Transactional은 클래스나 인터페이스에도 붙일 수 있다. 그러면 해당 클래스/인터페이스 내의 모든 메서드에 적용된다. 2. @Transactional의 속성 속성 설명 prop..

    Spring MVC - [ 서비스 계층의 분리 / Transactional ]

    Spring MVC - [ AOP ]

    AOP란 AOP(Aspect Oriented Programming)란 관점 지향 프로그래밍으로, 부가 기능(advice)을 동적으로 추가해주는 기술이라고 볼 수 있다. 여러 메서드에 공통 코드를 추가할 때 각각의 메서드가 아니라 아래 사진과 같이 동적으로 추가해줄 수 있다. 그러면 핵심 기능과 부가 기능이 분리되어 변경에 유리한 코드가 된다. 참고로 코드 추가는 메서드의 처음(Before Advice)과 끝 부분(After Advice)에만 가능하다. * Before Advice + After Advice = Around Advice AOP 관련 용어 종류 설명 target advice가 추가될 객체 advice target에 동적으로 추가될 부가 기능(코드) join point advice가 추가(jo..

    Spring MVC - [ AOP ]