#게시판 전체 구조다 똑같은데 Service가 추가가 된다. Service가 추가되면 web이 아니라, service에 transaction이 걸린다. Web은 하나의 서비스만 호출한다. Web이 하던 로직을 일부 service로 넘긴다. 세션이 필요하다면 web에서 service로 세션을 넘겨준다. 컨트롤러가 하는 일은 서비스만 호출해주면 되는 것이다.서비스는 여러개의 biz를 호출한다. #Toad에서 계정 만들기 1. System으로 접속한다. 2. Create UserSPRING으로 만든다.3. Roles와 System Privileges를 HR에서 copy해온다.4. 테이블 만들기 #Tip. 4000글자 넘을 때는 어떻게 하나요??Data Type을 CLOB으로 설정하면 제한없이 쓸 수 있다. 5..
Dynamic SQL쿼리 내에 조건문을 이용해서 중복되는 쿼리들을 최소화시킬 수 있다. #Dynamic Query 의 종류IfChooseJava의 else if 격TrimForeach잘 사용되지 않지만 가끔 사용한다. #if파라미터로 받아온 값을 조건절로 거를 때 사용한다. 파라미터 타입 안에 다른 타입(클래스)가 포함되어 캡슐화를 이룰 경우 .(dot) 연산자로 변수 접근이 가능하다. #chooseElse if 가 없기 때문에 choose로 사용한다.로 로 크게 감싸고 으로 조건을 걸고 로 기타를 거른다. #Trim(where, set)여러 구문 중 하나만 실행할 수 있다. SELECT *FROM BLOGWHERE state = #{state}AND title like #{title} 이런 구문에서 모..
# Tip. bean Graph를 보면서 MyBatis 전체 구조 파악하기 각 bean 설명AOP 영역+dataSource은 다른 것을 쓰더라도 공통적으로 사용한다.sqlSessionFactory 와 sqlSessionTemplate은 MyBatis 전용이다.코드를 보면 알수 있다. sqlSessionFactory와 sqlSessionTemplate은 org.mybatis로 시작된다. dataSource는 org.apache로 시작하기 때문에 공통사항이다. dataSource : 연결에 필요한 커넥션들을 미리 만들어놔서 커넥션 풀에 담아두는 역할이였고,sqlSessionFactory : MyBatis가 db에 붙을 수 있게 만들어주는 부분sqlSessionTemplate : MyBatis가 db가 연동되..
트랜잭션이란? 하나의 업무 단위 하나의 업무는 여러개의 작업단위로 쪼개진다. 이것들을 모아둔 것을 트랜잭션이라고 부른다. #이런 트랜잭션이 왜 중요할까? 트랜잭션임을 어떻게 알고 롤백을 시킬까? 어플리케이션에서 쿼리를 날리면 바로 커밋이 되는데, 어떻게 롤백을 시킬까? 트랜잭션을 날렸을 때 MyBatis가 커밋을 날린다. 중간에 에러가날 경우, 다 롤백을 시킨다. 즉, MyBatis 트랜잭션을 이해하기 위해서는 관점지향 프로그래밍을 이해해야한다. 관점 지향 프로그래밍(AOP: Aspect Oriented Programming) 공통적으로 적용되는 기능들을 특정 Method 혹은 Class가 실행되기 전/후 등의 단계에서 자동으로 실행될 수 있게 지원하는 프로그래밍 방법. Logging, Transacti..
MarkdownPad Document Controller의 리턴타입 void @responsebody Interceptor 모든 페이지마다 동일한 기능을 제어할 수 있다. 예를 들어, 사용자가 클릭을 하고 그 후에 서버가 처리하는 시간을 구할 수도 있다. 이 페이지에서 어떤 url이 인기가 제일 많은지 체크하고 싶을 때, url혹은 uri를 체크해서 db에 쌓을 수도 있다. 즉, 인터셉터는 필터가 할 수 있는 일을 다 할 수 있다. Q. 그렇다면 필터와 다른 것이 무엇인가? 바로 처리시점이다. filter의 경우 : 브라우저는 필터로 요청을 한 뒤에 서블릿으로 간다. Spring의 경우 : 브라우저는 필터로 요청을 한 뒤에(여기까지는 필터와 동일하다) spring의 dispatcher servlet이 받..
#예외 처리하기일반적으로 나는 에러들: 브라우저에서 잘못하는 에러들은 4로 시작한다(400, 403, 404, 405): 서버 에러들은 5로 시작한다(500) → Internal Server Error라고 부름.일반적으로 나는 에러들을 처리할 수 있는 페이지를 만들어준다.web.xml에 정의해주는 방법과 handler로 정의하는 방법이 있다. 1) web.xml 수정 를 400, 404, 500을 추가해준다.필수 속성들 : (1) error-code : 에러 코드(2) location : 에러 코드가 났을 때 보여줄 페이지 경로 2) jsp 생성(400.jsp, 404.jsp, 500.jsp) 3) 실행페이지의 용량이 충분하지 않으면은 IE는 404.jsp를 띄워주지 않는다.주석을 넣거나 이미지를 넣어주..
#커맨드 객체 값 검증하기검증(Validation Check)을 위해서 Annotation을 추가한다.@Email, @NotEmpty 등이 있다.@Valid 라는 Annotation을 적으면 결과를 Errors로 받을 수 있다.(반드시 @Valid와 Errors는 붙어 있어야 한다. 순서는 상관없다)errors는 자동으로 Model에 포함되어 있어서 jsp로 바로 전달이 된다. 즉, 굳이 view.addObject 해서 errors를 넣어줄 필요가 없다는 것이다.jtsl 중 core library를 선언하듯이, 라는 taglib을 적어주면 커맨드 객체 값을 검증할 수 있다.applicationContext.xml도 수정해주어야 한다. #Spring이 제공하는 주요 애노테이션 잘 사용하지 않는다.@NotN..
# login 페이지 만들기 1. RequestMapping에 로그인 추가WEB-INF/view/login/login.jsp 를 찾는다. 2. login 폴더 안에 login.jsp 만들기 # 데이터 보내기 1. ArticleController 클래스 만들기ModelAndView : 데이터를 전송시킬 수 있는 리턴 타입(cf. String 타입은 단순하게 페이지만 열어주는 역할을 함)setViewName : 어떤 페이지를 보여줄 것인지addObject : key와 value를 담아 보낼 수 있는 메서드setAttribute를 여러개 썼던 것 처럼, addObject를 여러개 쓸 수 있다. 2. list.jsp 만들기 3. applicationContext.xml에 내용 추가하기 4. url로 접속 # R..
프로젝트 생성하기 1. Dynamic Web Project 선택 2. 기존의 폴더를 지우고 아래 4개 폴더 생성 src/main/javasrc/main/resourcessrc/test/javasrc/test/resources 3. src/main/webapp으로 디렉토리 생성 4. 서블릿을 추가하기 위해서는 web.xml을 고쳐야 한다. ctrl+space를 눌러서 dispatcherServlet을 선택한다. (1) param-value applicationContext.xml는 프로젝트 위치에 저장되는 것이 아니라, 보통 D드라이브에 저장되기 때문에 src/resources/main안에 넣지 않는다. 수정을 하기 위해서는 외부로 빼두는 것이다.브라우저는 WEB-INF로 접근할 수 없다. (2) url-..
- Total
- Today
- Yesterday
- 뉴스피드 가져오기
- 자바프로그래밍
- 배열
- 포스팅하기
- intent
- aop
- 쿼리
- 메뉴바에 버튼 생성하기
- 게시판 만들기
- MVC
- 예외처리
- sql
- spring
- 글쓰기 버튼
- Linear Layout
- mongo db
- Erwin
- jQuery
- 메소드
- Relative Layout
- 제이쿼리
- 뒤로가기 버튼
- facebook 연동
- JSP
- activity
- 클래스
- er다이어그램
- mybatis
- query
- ERD
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |