전체 글189 [Spring] @Transactional-2 Transcation의 속성 속성 설명 propagation Tx의 경계(Boundary)를 설정하는 방법을 저장 isolation Tx의 isolate level을 지정, DEFAUL, READ_UMCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE Default의 경우 DB설정을 따른다(Default = REPEATABLE_READ) readOnly Tx이 데이터를 읽기만 하는경우, true로 지정하면 성능이 향상 rollbackFor 지정된 예외가 발생하면, Tx를 rollback // RuntimeException과 Error는 자동 rollback noRollbackFor 지정된 예외가 발생해도, Tx을 Rollback하지 않음 timeout 지.. 2022. 7. 12. [Spring] @Transactional-1 Presentation Layer >> CONTROLLER : 사용자의 요청을 받는 부분 Businees Layer >> SERVICE : 비즈니스 로직을 처리할 계층 >> Tx 처리를 해야하는 부분 Persistence Layer >> DAO : CRUD가 이뤄지는 계층 >> TransactionManager란? - DAO의 각 매서드는 개별 Connection을 사용 ==> 1개의 Connection을 사용하도록 해야 Rollback하여 되돌릴 수 있음 ==>> DAO에서 Connection을 얻거나 반환할떄 DataSourceUtils를 사용해야 한다. ===> Connection con = DataSourceUtils.getConnection(ds); ===> DataSourceUtils.rele.. 2022. 7. 12. [Spring] AOP-2 관점지향 프로그래밍, 횡단 관심사, cross-cutting concerns 부가 기능(advice)를 동적으로 추가해 주는기술 >> 메서드의 시작 또는 끝에 자동으로 추가 >> 부가기능 m.invoke(obj,args) >> 핵심 기능 >> 부가기능 >> Custom, Sales, Clert 라는 메서드에 Logging, Transaction, Security 가 모두 들어간다 고했을때 이 기능들을 분리하여 공용으로 사용할수 있도록한다. 그리고 해당 메서드에 자동으로 주입해준다. ======================== AOP 관련용어 target : advice가 추가될 객체 ( custom, sales, clert ) advice : target에 동적으로 추가될 부가 기능(코드) (Loggin.. 2022. 7. 12. [Spring] Transaction, Commit, Rollback >> Transaction - 더 이상 나눌수 없는 작업의 단위 - N개의 Transaction이 모두 성공하지 않으면 Transaction이 실행되기 전으로 Rollbak해야 한다. - N개의 트랜잭션을 1개의 트랜잭션으로 묶어서 처리해야한다. ◆ 트랜잭션의 속성 (원일이는 지독해) > 원자성(Automicity) : 나눌수 없는 하나의 작업으로 다뤄줘야 한다(입금/출금 ==> 하나의 작업으로) > 일관성(Consistency) : Tx가 수행전과 후가 일관된 상태를 유지해야 한다. > 독립성(Isolation) : 각 Tx는 독립적으로 수행되어야 한다. (Tx가 다른 Tx에 영향을 끼치면안된다.) - Isolation Level --- READ UNCOMMITED : 커밋되지 않은 데이터도 읽기 가능.. 2022. 7. 6. [DB/Mysql] HAVING, GROUP BY select 절 5 from 절 1 where 절 2 group by 절 3 having 절 4 order by 절 6 >> GROUP BY 절을 기술하지 않거나 GROUP BY 절에 NULL 이나 ()을 기술하면 전체 행이 하나의 행그룹으로 처리된다. >> 위의 쿼리문을 잘 분석해보면 detpno job sal 행그룹 c1 10 MANAGER 2450 10 7459 10 PERSIDENT 5000 20 ANALYST 3000 20 8975 20 ANALYST 3000 20 MANAGER 2975 30 MANAGER 2850 30 2850 >> 위의 쿼리를 분석해보자면 detpno job sal 행그룹 c1 10 MANAGER 2450 10, MANAGER 2450 10 PERSIDENT 5000 10,.. 2022. 7. 5. [DB/MySQL] 기타함수(Group_concat) Mysql : group_concat(colums, SEPARATOR 'delimeter') // group_concat(colums) 시 default 는 ' , ' 로 나온다 Oracle : LISTAGG(colums, 'delimiter') WITHIN GROUP(ORDER BY colum) 2022. 7. 5. [DB/MySQL] 집계함수 count(*) 전체 행의 갯수를 반환 count(expr) 널이 아닌 expr의 갯수를 반환 count(distinct expr) 널이 아닌 expr의 고유한 갯수를 반환(중복없는) >> MIN( expr) / MAX( expr ) ==> expr의 최대 최솟값을 반환한다. >> 아래의 쿼리는 empno = 0 의 조건에 해당하는 결과가 없기 때문에 결과가 아무것도 반환되지 않는다. >> 하지만 집계함수를 사용한 쿼리는 where를 만족하는행이 없더라도 하나의 행을 반환한다. 즉 데이터 존재여부를 확인할 떄 사용할 수 있다. >> Mysql : ifnull() --> oracle : nvl() >> SUM( expr ) / expr 의 합계값을 반환 >> sum(expr) 일때 expr의 합이 null.. 2022. 7. 5. [DB/ORACLE] WHERE 절 LNNVL (condition) ==> condition 이 FALSE, UNKNOWN일경우 TRUE, TRUE일경우 FALSE를 반환한다. ESCAPE ==> LIKE 연산자 사용시 %, _ 을 검색할 경우 ESCAPE를 사용하여 검색한다 ==> where ename LIKE '_\%_' ESCAPE '\'; ESCAPE를 사용하여 2번째 문자가 %인 행을 검색한다. 또한 'CHRISMAS' LIKE '%' || event || '%'; ||을 통해서 컬럼을 LIKE 에서 포함되어야 할 문자로 선택할 수 있다. 즉 event 컬럼에 저장된 값들중 CHISMAS가 포함된 행 들을 출력한다. 2022. 7. 4. [DB/Oracle] 조건 우선순위 우선순위 조건 1 연산자 2 비교 조건( =,,>,=, 우선순위에 의하여 deptno = 10 or ( deptno = 20 and job = 'MANAGER') where job = 'CLERK' and deptno = 10 or deptno = 20 ==> 우선순위에 의하여 ( job = 'CLERK' and deptno = 10 ) or deptno = 20 이된다. 2022. 7. 4. [Intellij] JUnit 설정 셋팅 >> JUnit을 사용하기 위해서는 Dependency를 추가해줘야 한다. >> 1. Spring Test 를 추가해줘야 @RunWith어노테이션에서 SpringJUnit4ClassRunner.class 를 파라미터로 넣어줄수 있다. >> 2. JUNIT 버전을 4.12버전 이상으로 변경해준다. >> Test 경로에 클래스를 추가한 후에 설정을 완료한다 >> assertTure 의 경우 매개변수가 True일경우 test pass // False 일경우 test fail이 발생한다. >> @RunWith를 통해서 ApplicationContext 가 생성되고, ContextConfiguration을 통해서 Root-context 설정이 추가되어 진다. ==============================.. 2022. 7. 2. [Intellij] Intellij 에서 DATABASE 연결 >> Intellij 우측에 보면 DataBase라는 항목을 클릭 한 후 >> + 를 눌러서 사용할 DATABASE를 선택한다. >> 그후 USER, PASSWORD, DATABASE를 연결하려는 데이터베이스에 맞게 작성한 후에 >> Test Connection을 눌러서 연결을 확인한 후 OK 를 눌러주면된다. >> 위와 같은 과정을 거치게 되면 console 창이 뜨고 해당 Console 창을 통해서 Mysql을 사용할 수 있다. 2022. 7. 2. [SpringBoot] JSP 파일 연동 Spring Boot 에서 JSP 파일을 사용하려면 maven Repository 에서 JSTL, Jasper Dependency 를 추가해줘야 한다. >> 이때 만약에 thymeleaf 와 같은 SpringBoot에서 제공하고 있는 View Template Engine을 사용하고 있다면 주석 처리 하거나 제거한다음에 Dependency를 추가해 주시기 바랍니다. >> Dependency 를 추가한 후에 JSP 파일 경로를 설정 및 폴더를 생성해 줍니다. - 1. application.properties에 prefix, suffix 추가 // 2. src/main/webapp/WEB-INF/${views} >> 1. >> Spring Boot 프로젝트를 처음 생성하면 src/main 까지 밖에 없기 때문.. 2022. 6. 29. 이전 1 ··· 3 4 5 6 7 8 9 ··· 16 다음