파일을 첨부할 수 있는 게시글 작성을 할 경우 게시글 테이블에 게시글을 입력하고 첨부파일 테이블에 해당 게시글 번호를 같이 입력해줘야 한다. 오라클은 시퀀스를 이용하여 시퀀스를 먼저 뽑아낸 뒤 두 테이블에 동일한 값을 추가하지만 mysql은 auto-increment로 설정된 column은 그 값을 먼저 가져올 수 없다. 이럴 경우에 mysql은 last_insert_id()라는 함수를 사용하면 된다. 이 함수는 가장 최근에 성공적으로 수행된 insert 구문의 첫번째 auto-increment의 값을 반환한다. 이 함수는 connection마다 따로 괸리된다. 두 개의 다른 insert가 발생하더라도 connection이 다르다면 각각의 id값을 가져온다. 참고 블로그 링크
1. SLF4J: Class path contains multiple SLF4J bindings 에러내용 : 1 2 3 4 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/C:/eng/spring_project/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/SampleBoard/WEB-INF/lib/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/C:/eng/spring_project/.metadat..
Log4j : 자바기반의 로깅 유틸리티. Apache에서 만든 오픈소스 라이브러리 System.out.println()만 사용한다면 1) 운영시에 불필요한 로그가 계속 출력된다. println이 운영에서도 남아 있다면 불필요한 로그로 리소그가 낭 비된다. 2) 모든 println을 삭제하면 에러가 발생했을 때, 해당 원인을 찾기가 어렵다. println이 모두 삭제된 상태라면 원인을 찾을 수 없다. 3) 성능에 영향을 미친다. 1부터 100까지의 단순 출력이라면 단시간에 실행이 되여 성능에 큰 영향이 없지만 계산 과정 같은 로직을 출력하게 했다면 시간이 오래 걸리게 되고 성능에 영향을 미치게 된다. Log4j는 위의 문제를 해결 할 수 있고 옵션 설정을 통해 선택적으로 로그를 남기거나 특정 파일에 로그를..
오류(error) : 시스템에 비정상적인 상황이 생겼을 때 발생한다. 이는 시스템 레벨에서 발생하기 때문에 심각한 수준의 오류이다. 따리사 개발자가 미리 예측하여 처리할 수 없기 때문에 어플리케이션에서 오류에 대한 처리를 신경 쓰지 않아도 된다. 예외(exception) : 개발자가 구현한 로직에서 발생한다. 즉, 예외는 발생할 상황을 미리 예측하여 처리할 수 있다. 예외는 개발자가 처리할 수 있기 때문에 예외를 구분하고 그에 따른 처리 방법을 명확히 알고 적용하는 것이 중요하다. -- 예외클래스 구조 그림 checked/unchecked exception checked excepiton unchecked exception 처리여부 반드시 예외를 처리해야 함 명시적인 처리를 하지 않아도 됨 확인시점 컴파..
application context(.xml) - service, repository를 등록한다. - 전체 계층구조에서 최상단에 위치한 컨텍스트 - 서로 다른 서블릿 컨텍스트에서 공유해야하는 Bean들을 등록해놓고 사용할 수 있다. - 웹 어플리케이션 전체에 적용 가능한 프로퍼티, DB 연결, 로깅 기능 등에 이용한다. - servlet context에 등록된 bean은 이용할 수 없다. - servlet context에 동알한 bean이 있을 경우 servlet context bean이 우선된다. - 하나의 컨텍스트에 정의된 aop 설정은 다른 컨텍스트의 bean에는 영향을 미치지 않는다. servlet context(.xml) - controller를 등록한다. - 서블릿에서만 이용되는 컨텍스트(.d..
blocking- system call이 끝날때까지 프로그램은 대기하고 system call이 완료되면 return한다.- wait queue에 들어간다.- 예로 c언어의 scanf()처럼 입력하기 전까지 대기하고 입력 받으면 ruturn한다. non-blocking- system call이 완료되지 않아도 대기하지 않고 return 한다.- wait queue에 들어가지 않는다. blocking, non-blocking 차이- 프로그램의 실행하는 순서 관점으로 보면된다.- 프로그램이 바로 실행할 수 있는 유무가 다르다. ----- synchronous(동기)- system call이 끝날때까지 기다리고 결과물을 가져온다. asynchronous(비동기)- system call이 완료되지 않아도 나중에 ..
로그인(세션) 체크, 권한 체크, XSS(Cross site script) 방어, pc/모바일 분기처리, 로그, 페이지 인코딩 변환 등공통업무로 모든 페이지마다 작성해야할 코드가 있다.이런 중복되는 코드들을 자동으로 처리할 수 있는 방법엔 filter, interceptor, aop가 있다. (그림필요)- interceptor와 filter는 servlet 단위에서 실행되고 aop는 메소드 앞의 proxy패턴 형태로 실행된다.- 실행 순서는 filter > interceptor > aop > interceptor > filter 순으로 거치게 된다. 1. filter 요청과 응답을 거른 뒤 정제하는 역할을 한다.서블릿 필터는 DispatcherServlet 이전에 실행이 되는데 필터가 동작하도록 지정된 ..
스프링과 JPA연동을 위해 project facets를 jpa 프로젝트로 변환해야한다고 교재엔 나와있지만 역시나 없으니 넘어간다. 1. 라이브러리 내려받기123456789101112131415 org.hibernate hibernate-entitymanager 5.1.0.Final org.springframework spring-orm ${org.springframework-version}Colored by Color Scriptercs 2. jPA 설정 파일 작성- jpa 설정 파일인 persistence.xml 파일은 applicationContext.xml에 모두 등록하기 때문에 추가하지 않아도 된다. 3. 엔티티 매핑 설정- @Entity, @Table, @Id, @GenerateValue 같은 ..
- ORM(Object-Relation Mapping)은 정확하게 일지하지 않는 자바의 객체와 데이터베이스의 테이블을 매핑해준다.- 이전까진 스프링 JDBC나 Mybatis를 이용하여 자바 객체와 테이블을 매핑해왔지만 어떤 DB 연동 기술이나 프레임워크를 사용하더라도 SQL 명령어를 자바 클래스나 외부 XML에 작성해야 했다. 그리고 유지보수 과정에서 지속적으로 수정되고 새롭게 추가 된다.- ORM의 큰 특징은 필요한 SQL을 자동으로 생성한다. 대표적인 ORM 프레임워크는 Hibernate 프레임워크이고 이러한 ORM 프레임워크를 표준화한 것이 JPA다. 1. JPA 특징- JDBC와 마찬가지로 프레임워크 변경이 가능하다. 2. JPA 프로젝트 설정2-1 JPA 프로젝트 생성- new > Maven P..
스프링은 Ibatis 연동을 위한 API를 지원하지만 Mybatis 연동에 필요한 API를 제공하진 않는다.하지만 Mybatis에서 스프링 연동을 위한 API를 지원한다. 1. 라이브러리 내려받기- mabatis는 순수하게 Mybatis 관련 라이브러리고, mybatis-spring는 Mybatis와 스프링 연동을 위한 라이브러리다.123456789101112131415 org.mybatis mybatis 3.3.1 org.mybatis mybatis-spring 1.2.4cs 2. mybatis 설정 파일 복사 및 수정- mybatis프로젝트에서 사용했던 board-mapping.xml과 sql-map-config.xml파일을 src/main/resources폴더에 복사한다.- dataSources는 ..
- Total
- Today
- Yesterday
- @Autowired
- JoinPoint
- servlet context
- aop
- 어노테이션
- XmlWebApplicationContext
- #java.lang.NoClassDefFoundError: org/slf4j/event/LoggingEvent삭제
- 의존성
- application context
- Class path contains multiple SLF4J bindings
- NoClassDefFoundError
- 컨트롤러
- setter 인젝션
- multiple SLF4J bindings
- afterCompletion
- java.lang.NoClassDefFoundError: org/slf4j/event/LoggingEvent
- SqlSessionFactoryBean
- aspect oriented programming
- 검색
- ViewResolver
- LoggingEvent
- exclude-mapping
- blocking
- 의존성 주입
- Controller
- 횡단 관심
- postHandler
- preHandler
- handlermapping
- 스프링 컨테이너
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |