일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- RSA
- StringUtils
- Executors
- Instrumentation
- String
- Callable
- AES
- IPTV
- ORM
- mac
- Log4J
- PKCS#8
- Java
- Postman
- sha1
- 이클립스 플러그인 개발
- Executor
- ACAP
- xlet
- Freemaker
- date
- Runnable
- DAMO
- PKCS
- 한글조사
- 자바
- 암호학
- 한글조사처리
- JCE
- 자바 암호화
- Today
- Total
목록ORM (7)
오늘은 어디로 갈까...
QueryExecutor는 말 그대로 쿼리 실행기이다. 여기서는 기본적으로 제공하는 SimpleQueryExecutor를 기준으로 설명하겠다. SimpleQueryExecutor는 쿼리와 해당 파라메터를 넘겨받아, PreparedStatement을 사용해서 실행하는 역할을 한다. 넘어온 쿼리와 파라메터를 이용해서 실행 할수 있는 쿼리(RunnableQuery)를 생성해 낸 다음, SQL문으로 PreparedStatement를 생성해하고, 파라메터들 값을 설정한다. 만약 세션에 동일한 SQL문이 있다면 PreparedStatement를 재사용하도록 되어있다. /** * 결과값을 돌려주는 SQL을 실행한다. * * @param * @param session * @param conn * @param query..
오늘은 QueryProvider에 대해서 알아보도록하겠다. QueryProvider는 쿼리를 제공하는 역할을 한다. 우선 제공할 대상인 Query 클래스에 대해서 살펴보자. 처음 본인이 생각해낸 Query 클래스는 SQL 문장과, 파라메터를 가지는 구조였다. 정적 SQL일 경우에는 이 생각이 틀리지 않았지만, 동적 SQL일 경우는 파라메터에 따라 SQL 문장이 변경되어야만 했다. 그래서 Query 인터페이스를 상속받은 StaticQuery와 DynamicQuery 클래스가 만들어지게 되었다. 그리고 실행이 가능한 Query(SQL 문장이 확정되어진)는 정적 SQL일 경우에만 해당되므로, 실행 가능한 Query를 RunnableQuery 인터페이스로 정의하고, StaticQuery가 구현하도록 하였다. 즉..
어떤 놈을 먼저 설명해볼까 고민을 한 끝에, PersistenceManager를 해부대에 올려버렸다. 그 이유는 시작과 끝이 이놈을 통해서 일어나기 때문이다. 예를 들어 등록을 실행할경우 아래 그림처럼 흘러간다. 그림이 정확한것은 아니기에 흐름만을 파악하면 될것이다. PersistenceManager의 insert(EntityObject) 메소드가 호출되되면, QueryProvider에가 해당 쿼리를 요청한 후 결과를 받는다. 그림에는 없지만 세션이 존재한다면, 기존에 존재하는 세션을 사용하고 없다면 새로운 세션을 생성하여 할당받는다. 그리고 세션이 새로운것이나 트랜잭션이 시작되지 않은 상태라면, 트랜잭션을 시작한다. 그런다음 QueryExecutor를 통해 해당 쿼리를 실행 시킨후 트랜잭션 관련 작업을..
프레임워크 개발에 있어서 가장 중요하다는 생각되어지는 것은, 구조를 설계하는 일이라고 생각한다. 잘 만들어진 구조를 가진 프레임워크가, 잘 못 만들어진 구조를 가진 프레임워크보다 좋다는것은 너무나 자명한 사실이다. 그렇다면 어떤것이 잘 만들어진 구조일까? 여러가지 요소가 있지만, 그 중에서 가장 중요한 것이라면 모듈화를 잘 하는것이다. 응집도(Cohesion)를 강하게 하고, 결합성(Coupliing)을 약하게 하는것을 의미한다. 그렇다면 어떻게 하면 좋은 구조를 설계할 수 있을까? 그것에 대한 정답은 없다고 본다. 많은 삽질과 노력에 의해서 얻어진 경험에 의해서 조금씩 좋아지는것뿐인것이다. 겁먹지 말고 대충 구조를 만들어보고, 이게 아니다 싶으면 다시 만들면 되는것이다. 이런 시행착오를 거치다 보면 조..
오늘은 지난 시간에 이어 DAMO의 기능적인 부분을 살펴보도록 하겠다. 지난 시간에는 EO(EntityObject)를 가지고 요리하는 방법을 배웠으니, 오늘은 SQL 맵핑을 이용한 요리방법을 배워보도록 하자. 8) SQLMap XML 만들기 damo.t02 패키지를 생성한 다음, emp.xml을 생성한다. 우선 간단한 select 문을 사용해보도록 하겠다. SELECT COUNT(*) FROM EMP DEPTNO = ${deptno} EMPNO = ${empno} SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO FROM EMP DEPTNO = ${deptno} EMPNO = ${empno} xml 생성이 완료되면, 만들 xml을 DAMO에서 사용가..
일단 DAMO를 만들어보기 앞서서, 어떤 기능을 제공하고 있는지, 실질적으로 살펴보도록 하자. 여기서는 오라클을 사용하도록 하겠다. 원래는 국내 DBMS의 보급을 위해 큐브리드를 사용하려고 했으나, 큐브리드 티셔츠를 못받은 관계로.... 마음이 삐뚫어져 버렸다. --; JDBC를 지원하기만 한다면 어떠한 DBMS를 사용해도 무방할것이다. 1) 테스트용 테이블 만들기 테스트할 테이블을 만들어보도록 하자. 오라클에서 널리 쓰이는 DEPT와 EMP 테이블을 생성한다. 그리고 테스트용 데이터도 알아서 넣어주자. ^^; CREATE TABLE DEPT ( DEPTNO NUMBER (2) NOT NULL, DNAME VARCHAR2 (14), LOC VARCHAR2 (13) ) ; CREATE TABLE EMP (..
현대 세계에서 개발을 함에 있어서, 꼭 빠지지 않는 부분이 있다면 데이터베이스 영역일것이다. 대부분 오라클, My-SQL, MS-SQL 등과 같은 관계형 데이터베이스를 사용해서 데이터 처리 부분을 위임하는 방식을 사용한다. 개발자들은 SQL을 직접 사용하여 데이터베이스에 접근한다. 그리고, CRUD를 처리하기 위해서 비생상적인 수많은 코드를 만들어낸다. DAMO는 이런 비생산적인 작업을 줄여보고자 탄생한것이다. 자바 진영에는 Hibernate와 iBatis라는 유명한 ORM 프레임워크가 존재하고 있다. Hibernate는 진정한 의미의 ORM 프레임워크라고 할 수 있다. 자바 객체와 관계형 데이터베이스를 맵핑하여, 데이터를 객체지향적으로 처리할 수 있게 도와준다. 도메인 설계가 잘 되어 있어야하고, 기술..