전체 글 139

[Eclipse] Run as에서 Junit Test을 선택할 수 없을 때? Missing Run as JUnit Test

개인 프로젝트 중 Test Code를 만들어 Junit으로 실행을 하려고 하는데 Run as에서 Junit을 바로 실행할 수 없었다. 눌러서 반응이 없는게 아니고, 아예 필드가 존재하지 않았다. JDK버전은 11이고, Junit은 4 version 구글링을 해보니, 이클립스를 껐다 키라는 소리가 있어 껐다 켰음에도 불구하고 그대로였다. 1. JDK버전과 Junit버전이 맞지 않아서 그런가? 하는 생각에 Junit을 5 버전으로 올렸다. 2. 그리고 프로젝트의 build path에서도 Junit을 5로 올렸다. junit junit 4.12 test org.junit.jupiter junit-jupiter-engine 5.5.2 test 3. 그리고 해당 프로젝트의 Junit 4 -> Properties에..

📕 Language/Java 2022.02.19

[Error 회고] Source와 Database의 제약조건이 어긋나는 경우

전 편에 이어서 ... https://itbox.tistory.com/39 [Error 회고] Lock방지를 위한 Transaction 분리 운영·관리하는 사이트 중, 요근래 유독 속도가 저하된 사이트가 있다. 속도보다도 큰 문제가 있었는데 특정 테이블에서 DB Lock이 지속적으로 걸린다는 것이었다. 이것은 속도의 문제가 아닌 사 itbox.tistory.com 이제 Lock은 방지했고, 어디서 Error가 떨어졌길래 그간 시도와 실패를 반복했을까? 궁금해졌다. 그래서 이클립스에서 해당 사이트를 로컬로 돌려, 인터페이스 구동을 해보았다. 못받아온 과거 데이터의 양이 많아서 다른 노트북에서 구동 후, 시간이 날때마다 가서 콘솔을 확인해보았는데 아니나 다를까 빨갛게 SqlIgnoreException 오류가..

📕 Language/Java 2022.02.16

[Error 회고] Lock방지를 위한 Transaction 분리

운영·관리하는 사이트 중, 요근래 유독 속도가 저하된 사이트가 있다. 속도보다도 큰 문제가 있었는데 특정 테이블에서 DB Lock이 지속적으로 걸린다는 것이었다. 이것은 속도의 문제가 아닌 사용의 문제이기 때문에 커다란 이슈였다. '데이터 수정이 안된다, 수정 시 자꾸 화면이 멈춰버린다.' 라는 긴급 요청에 급한대로 우선 Lock을 kill하기를 여러번. 안되겠다싶어, 좀 더 자세히 들여다봤다. Database가 Oracle인 사이트였고, 이에 Oacle lock이 걸려있는 테이블과 SQL query를 조회해보았다. 역시 특정 테이블에서 Lock이 걸려있었는데, 눈에 띄는 것은 해당 테이블과 업무적으로 엮여있는 특정한 테이블들이 함께 걸려있다는 점이었다. '아, 저 테이블들이 공동으로 무언가 작업을 수행..

📕 Language/Java 2022.02.16

[ORACLE] 제약조건 생성/삭제, 비활성화/활성화

PK제약조건 생성 ALTER TABLE TABLE_NAME ADD CONSTRAINT PK_제약조건명 PRIMARY KEY(PK_컬럼명); FK제약조건 생성 ALTER TABLE TABLE_NAME ADD CONSTRAINT FK_제약조건명 FOREIGN KEY(FK_컬럼) REFERENCES FK_TABLE_NAME(FK_참조컬럼명) ON DELETE CASCADE; 제약조건 삭제 ALTER TABLE TABLE_NAME DROP CONSTRAINT 제약조건명; ALTER TABLE TABLE_NAME DROP CONSTRAINT 제약조건명 CASCADE; 관련 참조관계를 모두 제거 제약조건 비활성화 ALTER TABLE TABLE_NAME DISABLE CONSTRAINT 제약조건명; 제약조건 활성화..

[Database] Transaction(트랜잭션), ACID. SAVEPOINT?

목차 트랜잭션이란? 트랜잭션 연산 트랜잭션 상태 트랜잭션의 특징(ACID) SAVEPOINT 트랜잭션(Transaction)이란? DB는 흔히 트랜잭션 단위로 처리된다고 한다. 트랜잭션은 하나의 작업을 수행하기 위한 논리적인 작업의 단위이다. 주의할 것은 트랜잭션은 질의어(SELECT, INSERT, UPDATE, DELTE)의 단위가 아니라는 점이다. 예를 들어, 사용자가 게시판에 글을 쓰고(INSERT), 그 후에 해당 글을 다시 조회(SELECT)하는 하나의 작업이 있다고 가정하자. 트랜잭션은 작업의 단위이므로 쓰는 행위와 조회 행위를 모두 포함한 것이 된다. 트랜잭션 단위로 묶여진 연산은 전부 실행되던지, 아무것도 실행되지 않아야 한다. 이것이 바로 DB에서 말하는 'All or Nothing'의..

📒 Database 2022.02.15

[ORACLE] oracle lock 조회, kill

-- 락걸린 테이블 확인 SELECT DO.OBJECT_NAME, DO.OWNER, DO.OBJECT_TYPE, DO.OWNER, VO.XIDUSN, VO.SESSION_ID, VO.LOCKED_MODE FROM V$LOCKED_OBJECT VO, DBA_OBJECTS DO WHERE VO.OBJECT_ID = DO.OBJECT_ID; -- 해당 테이블에 LOCK 이 걸렸는지. SELECT A.SID, A.SERIAL#, B.TYPE, C.OBJECT_NAME FROM V$SESSION A, V$LOCK B, DBA_OBJECTS C WHERE A.SID = B.SID AND B.ID1 = C.OBJECT_ID AND B.TYPE='TM' AND C.OBJECT_NAME IN ('TB_CO_GENO');..

[Java] 동기/비동기, 그리고 블로킹/논블로킹

실무를 접하면서 웹브라우저와 서버 간 데이터 처리할 일이 많기 때문에 동기, 비동기에 대하여서는 쉽게 접할 수 있었으나, 블로킹이라는 개념은 생소했다. 언뜻보면 동기와 블로킹은 동일 개념같기도 하지만, 큰 연관관계가 없는 별개의 개념이다. 그렇다면 차이는 뭘까? 많은 글을 읽었지만, 그림으로 정의하는 글이 가장 이해가 쉬웠다. 나도 더 정확한 이해를 위하여 그림으로 나타내보았다. 목차 1. 동기(Synchronous) 2. 비동기(Asynchronous) 3. 블로킹(Blocking) 4. 논블로킹(non-Blocking) 동기(Synchronous) 작업의 수행 주체가 두 개 이상. 그 작업들이 '시간'을 서로 맞춘다면 동기이다. 시간을 맞춘다는 것은 무엇을 의미하는걸까? 만약 작업이 2개라고 가정할 ..

📕 Language/Java 2022.02.12

[Java] Restful api 실제 사용 예제

타 시스템의 API를 호출하여 데이터를 송신했던 사용 예제이다. POST방식이며, 데이터는 JsonObject를 만드는 부분은 실제 운영 소스여서 오픈할 수는 없지만body쪽에 String외에, Json Obect가 중첩하여 들어가있어서 애를 먹었던 기억이 있다. private void restApiCallPost(String sendUrl, String token, String param, JSONObject jsonObject) { String[] returnData = new String[2]; HttpURLConnection con = null; try { URL url = new URL(sendUrl); //API URL 입력 con = (HttpURLConnection) url.openConn..

📕 Language/Java 2022.02.10
반응형