Spring/컨셉
-
스프링(Spring) 테이블 조인(Join) 예제Spring/컨셉 2018. 9. 7. 10:23
스프링 테이블 조인 예제. 게시글 작성할 때 작성자에 대한 정보를 갖기 위해 조인이 필요하다. 게시글 객체인 BoardVO에 작성자 객체인 UserVO를 멤버변수로 만들어 사용한다. package com.blog.naver.user.vo; import org.hibernate.validator.constraints.NotEmpty; public class UserVO { // userId @NotEmpty(message="userId 입력하세요") private String userId; @NotEmpty(message="userName 입력하세요") private String userName; @NotEmpty(message="userPassword 입력하세요") private String userPa..
-
스프링(Spring) AOP(Aspect Oriented Programming) 이용한 트랜잭션(Transaction) 처리 패턴Spring/컨셉 2018. 9. 7. 10:18
트랜잭션이란 '하나의 업무 처리단위' 를 뜻한다. 이해를 돕기 위해 대표적으로 사용하는 것이 예금 입금 및 출금이다. ATM기로 예금을 출금하는 경우를 하나의 트랜잭션으로 본다면 1) 사용자는 ATM기에 원하는 출금액을 입력 2) ATM기는 출금액 확인 후 DB에서 사용자의 잔고를 갱신 ( 잔고 - 출금액으로 ) 3) ATM기는 출금액만큼 투입구에 반환 여기서 문제는 ATM기에 출금액만큼의 돈이 없는 경우이다. 출금액만큼의 금액을 줄 수 없는 경우 ATM은 출금액만큼 사용자에게 줄 수 없지만 DB에서는 사용자의 잔고가 출금액만큼 줄어 있다. 따라서 사용자의 경우 클레임을 걸어 올 것이다. 이를 방지하기 위해 1 ~ 3까지를 하나의 업무 처리단위로 보고 모두 충족시키지 않는 경우 DB를 이전 상황으로 돌려..
-
스프링(Spring) ORM : MyBatis 예제Spring/컨셉 2018. 9. 7. 10:11
ORM : Object Relational Mapping Framework로 객체 관계 매핑을 좀더 쉽게 돕는 프레임워크이다. 서블릿으로 작성할 때에는 DAO 코드에 쿼리문을 넣고 그에 해당하는 정보를 가져와 멤버에 대해 하나하나 rs.getxx() 메소드 등으로 값을 직접 제어했다면, MyBatis에서는 데이터 타입에 관계 없이 멤버명만으로 값 설정이 가능하다. 이를 위해서 환경 설정이 만만치 않다. 실무에서는 이러한 설정이 잘 되어 있는 프로젝트를 하나 가지고 복사해 사용하면 된다. MyBatis 연동 방법 포스팅 연동에 필수적인 세가지가 있는데 1) Connection Pool 2) MyBatis 3) Ojdbc6.jar 파일이다. 1번은 commons-dbcp(dbcp가 Database Conne..
-
스프링(Spring) 유효성 검사(Validation Check)Spring/컨셉 2018. 9. 7. 10:00
스프링의 큰 강점 중 하나가 name 속성명만 맞추면 그에 해당하는 VO객체 매개변수에 set된다는 것이다. 이와 같이 스프링에서는 모든 데이터를 VO 객체단위로 관리하는데 이를 커맨드(Command) 객체라고도 칭한다. 스프링에서는 커맨드 객체의 멤버들 검증을 보다 간편하게 제공한다. pom.xml에서 hibernate-validator 검색해 org.hibernate hibernate-validator 검색해 org.hibernate hibernate-validator의 최신 Final 버전 선택 후 OKDispatcherServlet 에 등록한 Bean Spring Configuration 파일에 다음과 같이 LocalValidatorFactoryBean 등록. Annotation을 통해 값을 검증..
-
스프링(Spring)에서 자바스크립트(JavaScript) 사용 방법Spring/컨셉 2018. 9. 7. 09:51
스프링에서 css, js, image 등의 자원은 파일이 존재하는 url 그 자체로 사용된다. 따라서 url 요청을 해야 하는데 이는 MVC의 DispatcherServlet에서 판단해 Controller에서 RequestMapping Annotation을 검색하게 된다. 404에러가 발생하게 된다. 따라서 CSS, JavaScript, Image 같은 정적 자원들에 대해 URL을 따로 주어야 하는데 이를 지원해주는 녀석이 mvc:resources이다. 이 태그를 DispatcherServlet에 등록해줘야 사용할 수 있다. 다음과 같이 static 폴더들을 지정해둔다. 보통 WEB-INF 하위에 둔다. web.xml에 springDispatcherServlet의 param-value로 지정해둔 Bean..
-
스프링(Spring) DB 연동 예제Spring/컨셉 2018. 9. 7. 09:45
데이터베이스와 연동해 게시판 테이블의 정보를 가져오는 예제. 서블릿과 똑같이 작성하는데 앞선 예제에서 데이터베이스 연동은 rootContext에서 수행해준다. 따라서 daoImpl에서는 rootContext에 등록해둔 DataSource bean을 이용해 getConnection 메소드만 호출하면 된다. 글로는 난해할 수 있기 때문에 바로 예제를 보자. 테이블은 다음과 같이 작성했고, 데이터는 직접 예전 예제에서 등록했던 데이터들을 사용했다. 글 수정부분은 아직 미완성한 상태 전체 코드가 필요하면 깃허브 참조 https://github.com/minwoohi/board_springDaoImpl 클래스. 서블릿 이용할 때에는 멤버나 setter가 없었지만 rootContext.xml 파일에 등록한 data..
-
스프링(Spring) DataSource 이용한 데이터베이스 (db, oracle) 연동 예제Spring/컨셉 2018. 9. 6. 11:17
스프링 통해 mvc 데이터베이스 연동 예제 스프링에서 데이터베이스 연동을 위해 필수적인 Dependency 2가지를 pom.xml에 추가하는 것이 필요하다. ※ 프로젝트는 STS를 통해 작성되었고, MVC 패턴에 대해 숙지하고 있음을 전제로 작성했습니다. - pom.xml 파일의 Dependencies 탭으로 이동해 Add 버튼 클릭commons-dbcp 입력 후 하위요소 중 1.4[jar] 선택 후 OK Oracle의 경우 Maven 지원을 해주지 않기 때문에 개인 util과 같은 방법으로 등록해야 한다. jcbc.jar 파일이 필요하므로 등록 절차 포스팅1) jdbc 파일을 일정 경로에 둔다. 필자는 c폴더로 지정프로젝트 마우스 오른쪽 버튼 - Run As - Maven build... 클릭Goals..
-
스프링(Spring) 예제Spring/컨셉 2018. 9. 6. 10:59
Project Explorer에서 마우스 오른쪽 클릭 - New - Dynamic Web Project프로젝트명, Dynamic web module version 선택Add Folder 버튼 클릭해 다음과 같이 4개 폴더 작성. (\는 /로 입력, 처음 있던 폴더는 선택 후 Remove 버튼으로 반드시 삭제!)Context Root 설정 후 완료생성 프로젝트 마우스 오른쪽 - Configure - Convert to Maven Project 클릭기본 설정대로 Finish 버튼 클릭다음과 같이 pom.xml 파일 생성됨. 더블클릭해 Dependencies 탭의 Add 버튼 클릭spring-webmvc 입력 해 org.springframework spring-webmvc 선택 후 OK 검색 되지 않는 경우 ..