본문 바로가기

SPRING

(86)
트랜잭션 - 예제 [ xml, 어노테이션 ] 1. root-context.xml에 트랜잭션 환경 설정 1) JDBC 프로그래밍의 dataSource 객체 빈 컨테이너에 생성 - 트랜잭션은 DB와의 소통이기 때문에 DB 객체가 필요 2) Namespaces 에서 aop와 tx를 체크 - tx는 관련 설정할 때, aop는 실제 적용할 때 사용 2. pom.xml에 트랜잭션 환경 설정 - 왜? 실제 적용 시에 aop 사용해야하기 때문 3. root-context.xml에 트랜잭션 적용하기 - datasource / txManager / / 설정 - 컴포넌트 스캔 두 가지도 해주기 (당연하게 해줘야할 것) * 어노테이션을 사용하는 경우 - xml에 datasource / txManager / 설정만 해주면 된다) 4. ITXDAO 인터페이스 / TXMap..
트랜잭션이란? * 트랜잭션이란? 메서드를 묶어 버리는 것 둘 중에 하나라도 실행이 안되면 둘 다 안되게 하는 것 쿼리문이 한꺼번에 실행되거나, 그렇지 못하다면 그냥 둘 다 실행하지 마!! 둘 다 실행되었다면 처리를 확정 짓고, 처리 안됐으면 롤백으로 처리해줘야 함 게시판에서 사용 가능. 어떤 식으로? -> 게시판 테이블과 댓글 테이블이 있다. 게시판의 1번 글에 대해 댓글 테이블에 댓글이 3개 달렸다고 치자. 근데 1번 게시글을 삭제해버리면, 연결된 댓글 테이블의 댓글 3개는 삭제할 수 있는 방법이 없다 (웹적으로, 디비에서는 가능) 만약, 1번 게시글 삭제가 실패했을 경우, 댓글도 삭제될 수 없다. 즉, 삭제되려면 같이 삭제되고, 삭제가 안되려면 둘 다 안되야한다. 글을 삭제하면 댓글도 삭제된다 (함께 움직임) * ..
AOP - 어노테이션을 이용한 예제 1. pom.xml 의존성 설정 2. root-context.xml 환경 설정 3. IHelloService 인터페이스 / HelloService 구현 4. HelloController 작성 5. HelloMain 작성 6. LogAspect 작성 1) Advice 적용 시점 - @Before 2) Advice 적용 시점 - @After
AOP란? * AOP (Aspect Oriented Programming) - 관점 지향 프로그래밍 - OOP(객체지향 프로그래밍)는 대규모 프로그래밍 개발에 적합하기는 했지만 여전히 중복 작성되는 코드가 생길 수 밖에 없는 구조 -> 이를 해소하기 위해 AOP라는 개념이 스프링에 도입. 아래의 예를 살펴보자. 예시 1) class Log { public void log() { system.out.println("접속 완료"); } } // log() 메서드를 가진 Log() 클래스 이 클래스의 메서드를 다른 클래스에서 사용하려면, 상속을 통해 구현해줘야 함. class Start1 extends Log { public void log() { log(); // 메서드를 따로 호출하지 않아도 상속만 하면 자동으로 실..
게시판 - 게시글 수정 1. IBoardDAO 인터페이스 / BoardMapper.xml 구현 2. IBoardService 인터페이스 / BoardService 클래스 구현 3. HomeController 작성 4. JSP 파일 작성
게시판 - 게시글 삭제 1. IBoardDAO 인터페이스 / BoardMapper.xml 구현 2. IBoardService 인터페이스 / BoardService 구현 3. BoardController 작성 4. JSP 파일 작성 이번 경우에는 delete 구문은 따로 화면이 필요하지 않다. 내부 로직으로 로그인한 회원의 이름과 게시글 작성자의 이름이 일치하면, 삭제 버튼 클릭만으로도 삭제가 이루어지게 구현했기 때문이다. 삭제가 정상적으로 이루어지면, 게시물 목록으로 이동된다.
게시판 - 게시글 조회 1. IBoardDAO 인터페이스 / BoardMapper.xml 구현 - getBoardList() : 게시물 전체 목록 조회 - getBoardContent() : 한 개의 게시물 상세 조회 2. IBoardService 인터페이스 / BoardService 구현 3. BoardController 작성 - 게시물 관련 컨트롤러에서는 로그인 여부를 매번 체크해줘야함 4. JSP 파일 작성 1) 게시물 전체 목록 조회 * 경로 확인하는 방법 1. 컨트롤러에서 원하는 페이지의 value 값을 확인한다 -> board/detail/{boardnum} 2. 상세정보 3. " " 안에 그대로 넣는다고 생각하고 넣기, 그리고 나서 생각해보자. 4. board는 같은 경로니까 빼주고, {boardnum} 부분에 대..
게시판 - 게시글 작성 / 시퀀스 1. root-context.xml에 board 패키지 설정하기 2. board 테이블 생성 / 시퀀스 생성 * 시퀀스란? - Oracle SQL에서의 AUTO_INCREMENT 대체 - 주의사항 : 시퀀스를 사용할 테이블은 시퀀스보다 먼저 생성되어야 함 (시퀀스 생성 후의 시퀀스 사용 테이블을 생성하면 INSERT 시 카운트가 2부터 잡히는 경우가 발생) - 시퀀스 생성 CREATE SEQUENCE 시퀀스명 START WITH 1 INCREMENT BY 1 MAXVALUE 100 CYCLE NOCACHE; - 시퀀스의 현재 값 SELECT LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME = '시퀀스명'; - 사용 방법 CREATE TABLE A ( id nu..