본문 바로가기

(23)
스프링부트의 트랜잭션, 스프링 jpa의 osiv전략 전통적인 스프링의 트랜잭션. 여기엔 문제점이 있음! OSIV(Open Session In View) OSIV는 영속성 컨텍스트를 뷰까지 열어둔다는 뜻이다. 위의 경우 LAZY전략으로 조회시 롯데팀에 대한 정보가 조회되지 않는다. 이유는 서비스에서 영속성 컨텍스트가 종료되었기 때문이다. 이와 같은 경우를 해결하기 위해 영속성 컨텍스트 종료를 컨트롤러에서 종료하게 하여, 컨트롤러에서도 롯데팀에 대해서 조회 할 수 있게 한다. 단, 이때 프록시를 통해 정보를 조회(s) 할 수는 있으나, I, U, D와 같은 기능은 할 수 없다.(트랜잭션이 종료되었기 때문에) 정리해서 다시 그리면 아래와 같음 - 세션의 시작(사용자가 request한 시점)은 서블릿이 시작되는 시점 부터~ (세션은 영속성 컨텍스트를 포함) - ..
왜 SELECT를 할때도 @Transactional을 붙이는게 좋은가? 트랜잭션 : 일이 처리되기 위한 가장 작은 단위 - DB 격리 수준 1. 오라클 READ COMMIT 오라클의 경우는 변경하려고하는 데이터가 커밋이 되기 전까지는 undo영역의 데이터를 읽어옴 좌측의 A트랜잭션이 업데이트 후 커밋 직전에 B트랜잭션에서 empno=11을 조회하게 되면, 장보고가 아닌 임꺽정이 조회됩니다. COMMIT 된 후 장보고를 읽어올 수 있다 이것을 READ COMMIT이라고함! READ COMMIT의 정합성 문제 - 일어날 수 있는 문제의 경우 SELECT 를 했을때 항상 동일하게 가격이 10000원일테니, 예상 정산 결과는(SELECT 3번 한 결과물)3만원인데, COMMIT후 가격이 변해 2만원이 나타났다?! 위와같이 정산 서비스에 대해서 조회시 만원의 결과를 보여주다가 어느순..
스프링 기본파싱전략과 json통신 1. Get요청(select) 주소에 데이터를 담아 보낸다. 데이터 형태는 key=value 특징 : body로 데이터를 담아 보내지 않음. 2. Post, Put, Delete 요청(데이터를 변경) Body에 데이터를 담아 보낸다. 데이터 형태는 json으로 통일하는 것이 좋다. post의 경우 : form method ="post"로 보내면 됨 그러나 form태그의 한계 : get.post 요청만 가능 Put, Delete : 자바스크립트로 요청해야됨 그럼 저거두개는 form, 나머지 자바스크립트로 쓰면 로직이 지저분해짐 => 통일 필요 =>자바스크립트로 ajax요청 + 데이터는 json으로 통일! 태그라이브러리를 사용해서 태그를 사용하면 delete, put도 가능하긴한데 통일하는게 더 낫다. 3...
전자정부 프레임워크6 - 간단한 게시판 만들기(1) db CREATE TABLE NBOARD (unq NUMBER PRIMARY KEY ,title VARCHAR2(100) NOT NULL ,pass VARCHAR2(100) NOT NULL ,name VARCHAR2(20) NOT NULL ,content VARCHAR2(4000) NOT NULL ,hits number ,rdate date ); commit; select * from nboard; CREATE SEQUENCE NBOARD_SEQ INCREMENT BY 1 START WITH 1 MAXVALUE 99999; 1. pom.xml 2.ojdbc 3.sql-map-config => 경로 sqlmap밑 바로 Board_SQL인걸로 4.context-datasource 5.dispatcher-se..
jsp에서 글 수정시 콤보박스 데이터 받아오는 법 두가지 방법 1. 자바스크립트 함수 사용 2. core태그 사용해서 if문 콤보박스에 넣기 1, Job(업무) Hobby(취미) document.addEventListener("DOMContentLoaded", function () { var gid = "${codeVO.gid}"; // codeVO의 gid 값을 JavaScript 변수에 할당 document.getElementById("gid").value = gid; // 해당 값에 해당하는 옵션을 선택 }); 2.
전자정부 프레임워크 5- 코드관리 DB -----codes테이블----- create table codes ( code number not null primary key ,gid number not null ,name varchar2(100) not null ); -----codes 시퀀스----- create sequence codes_seq increment by 1 start with 1 minvalue 1 maxvalue 99999 nocycle noorder cache 20; dispatcher-servlet.xml pom.xml (lombok, 오라클설정) org.projectlombok lombok 1.18.24 provided codelds https://code.lds.org/nexus/content/groups/main..
전자정부 프레임워크4- update 2023.07.14 - [백/전자정부프레임워크] - 전자정부 프레임워크3- select, delete 전자정부 프레임워크3- select, delete 프로젝트는 egov_dept를 이어서 한다. insert는 전자정부 프레임워크2를 참고! 1.select 전체 목록 조회 sql.xml부터 dao package egovframework.example.sample.service.impl; import java.util.List; import org.springframework.stereotyp codingzorim.tistory.com 3. update deptDetail.jsp 수정 controller (기존 화면에서 바로 수정이 아니라 별도의 화면 띄울것) @RequestMapping(value = "..
전자정부 프레임워크3- select, delete 프로젝트는 egov_dept를 이어서 한다. insert는 전자정부 프레임워크2를 참고! 1.select 전체 목록 조회 sql.xml부터 dao package egovframework.example.sample.service.impl; import java.util.List; import org.springframework.stereotype.Repository; import egovframework.example.sample.service.DeptVO; import egovframework.rte.psl.dataaccess.EgovAbstractDAO; //@Repository("deptDAO"): 스프링 컨테이너가 관리하는 빈(스프링이 관리하는 객체) @Repository("deptDAO") pub..