backend 119

[Spring] @Autowired의 Before/After

Spring framework 2.5에 추가된 @Autowired annotation에 관한 글을 보고 정리. 알고있는 내용이기에~ 그냥 가볍게 Before 와 After code Before - @Autowired annotation이 없었을 때 applicationContext.xml에서 설정 EmpDao의 bean을 inject public class EmpManager { private EmpDao empDao; public EmpDao getEmpDao() { return empDao; } public void setEmpDao(EmpDao empDao) { this.empDao = empDao; } ... } 이랬던 코드가~ 바뀐다. After applicationContext.xml에서 설정..

backend/Spring 2009.04.29

자주 쓰지 않아서 잊어버리는 간단한 Oracle SQL문들

1. 제약조건 추가 alter table XXX add constraint uq_XXX unique(xxx); 2. 제약조건 확인 select constraint_name, table_name from user_constraints where table_name = 'XXX'; CONSTRAINT NAME은 USER_CONSTRAINTS VIEW를 통해 확인 가능. 모든 CONSTRAINT는 DATA DICTIONARY에 저장된다. 3. index 확인 select a.index_name,a.index_type,a.status,a.uniqueness,a.table_name,b.column_name from user_indexes a,user_ind_columns b where a.index_name=b...

backend/DataBase 2009.04.22

Thinkfree Office Live 한국어 서비스 시작

오랫만의 포스팅이~ Thinkfree Office Live 국내에 서비스를 오픈하는 내용이네요~ 드디어~ 오픈!~^_^ "무료 웹 오피스 + 무료 웹하드 + 간단한 협업 + 전세계 문서검색"으로 이루어진 Thinkfree Office Live는 "빠른시작"으로 로그인하지 않고 문서 미리보기, 파일변환, 공유, 검색등이 가능합니다. 급한 문서를 받았는데 어떤 내용인지 보기만 하면 되는데~ 해당 컴퓨터에 오피스가 안깔려있을 때 난감함은 누구나 다들 한번씩은 있을텐데 문서변환을 하고 유니페이퍼로 금방 확인해 볼 수 있습니다. 변환한 파일을 블로그에 올릴수도 있구요~ 다양한 문서 검색도 할 수 있답니다. 또 파워툴을 이용하면~ 온라인 오프라인 파일 동기화를 할 수 있답니다. Thinkfree Office Liv..

backend 2009.04.01

[iBatis] iBatis에서 Log4j를 이용하여 쿼리를 로그로 남기려면?

iBatis에서 Log4j를 이용하여 쿼리를 로그로 남기려면~~ log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG log4j.logger.java.sql.ResultSet=DEBUG 쿼리 출력 내용을 보면, 새줄 기호(\n)가 모두 사라져서 쿼리 문장을 보기 어려울 때는 http://www.sqlinform.com 에서 쿼리 문자열을 보기 좋게 정렬 할 수 있다. (한번 문장을 넣어보았는데~ 좋다~+_+) 또는 'sql formatter'로 검색하면 다양한 SQL 문자열 정리 도구 들을 볼 수 있다. iBatis in Action에서 발췌.

backend/iBatis 2009.01.20

[iBatis] 자동 생성 Key

이전에 포스팅했던 2008/08/29 - [나만의 작업/iBatis] - [iBATIS] 4. How to 내용에 있는 "Auto Generation Key" 부분에서 추가할 것이 있어서 좀 더 자세한 내용. iBatis in Action 에서 발췌. 거의 모든 데이터베이스는 새롭게 삽입되는 레코드마다 자동으로 기본 키를 생성해 주는 기능을 가지고 있는데, 삽입을 완료한 후 생성된 기본키를 알 필요가 있다면....? 자동 생성되는 기본키를 사용하도록 iBatis에서 요소의 특별한 자식 요소인 요소를 사용하여 생성된 키를 모델 객체로 가져올 수 있다. 이 접근법을 따르는 두가지 패턴이 있다. 1. 레코드를 삽입하고 데이터베이스가 키를 생성한 후에 생성된 키를 가져오는 것. 주의! ) 사용하는 드라이버가 마..

backend/iBatis 2009.01.18

[iBatis] 자바빈즈와 Map 타입의 결과

iBatis in Action책을 보다가 기억해 놓을 내용을 발췌해 놓는다. iBatis framework는 결과 매핑에 (Integer, Long 혹은 그 외의 원시 타입의 래퍼 클래스 이외에) Map 이나 자바빈즈 객체를 사용할 수 있다. 이 두가지 접근 방법의 장점과 단점 접근 방식 : 자바빈즈 장점 : 성능, 컴파일 시 강력한 타입 검사, 컴파일 시 이름 검사, IDE에서의 리팩토링 지원, 형변환이 줄어듬 단점 : 코드량의 증가(get/set) 접근 방식 : Map 장점 : 코드량의 감소 단점 : 느림, 컴파일 시 검사하지 않음, 약한 타입, 실행시 오류 발생이 잦음, 리팩토링 지원 없음.

backend/iBatis 2009.01.18

Oracle instant client 설치(Mac OSX, Windows)

Oracle을 설치하지 않고, Oracle사에서 제공해주는 client이용하여 원격에 있는 Oracle 접속하기~ 1. Mac OSX에서 설치법 1) 다운로드 http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/macsoft.html 여기서 간단히 Instant Client Package - Basic과 Instant Client Package - SQL*Plus을 받는다. 압축 받은 파일을 적당한 곳에 압축해제 한다. 난 두가지 폴더를 합쳐서 이름은 /usr/local/share/oracle 로 변경하였다. 2) 터미널에서 vi ~/.bash_profile 에서 # Oracle setting export ORACLE_HOME=..

backend/DataBase 2009.01.07

자바스크립트 로깅 라이브러리 Blackbird

옷! say "hello" to Balckbird and "goodbye" to alert() Blackbird는 Open source Javascript Logging Utility입니다. 정말 심플한 js와 css를 include하면 자바스크립트 로깅을 할 수 있군요. UI도 예쁘네요.. Public API log.toggle()Hide/show Blackbirdlog.move()Move Blackbird to next fixed positions: top-left, top-right, bottom-left, bottom-rightlog.resize()Expand/contract Blackbird log.clear()Clear all contents of Blackbirdlog.debug( messa..

backend 2008.11.03

[iBATIS] 8. Annotation 기반으로 JUnit4를 이용한 Spring TDD ~ 9. Reference

8. Annotation 기반으로 JUnit4를 이용한 Spring TDD @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback=true) @RunWith : 테스트를 실행할 org.junit.runner.Runner 구현 클래스를 지정할 수 있다. 스프링은 스프링 컨텍스트 설정 및 DI, 트랜잭션 처리 등을 지원해주는 Runner 구현 클래스를 제공하고 있다. Junit 4 기반의 테스트에서 스프링 컨텍스트에 설정된 빈 객체를 사용하고 싶다면 SpringJunit4ClassRunner 클래스를 @RunWith 어노테이션 값으로 설정하면 된다. @ContextConfiguration : 스프링 컨텍스트를 생..

backend/iBatis 2008.09.03

[iBATIS] 7. iBATIS + Spring + transaction

7. iBATIS + Spring + transaction 1. 코드 기반의 트랜잭션 처리 (Progrmmatic Transaction) 2. 선언적 트랜잭션 (Declarative Transaction) - 태그를 이용 - TransactionProxyFactoryBean 태그를 이용 - @Transactional 어노테이션을 이용 태그 이용 @ Transactional 어노테이션을 이용 @Transactional(readOnly = true) public class DefaultFooService implements FooService { public Foo getFoo(String fooName) { // do something } // these settings have precedence for..

backend/iBatis 2008.09.02

[iBATIS] 6. iBATIS + Spring

6. iBATIS + Spring SqlMapClientFactoryBean (org.springframework.orm.ibatis.SqlMapClientFactoryBean) SqlMapClientTemplate (org.springframework.orm.ibatis.SqlMapClientTemplate) SqlMapClientDaoSupport (org.springframework.orm.ibatis.support.SqlMapClientDaoSupport) 스프링의 iBATIS 연동지원 iBATIS 에서 데이터베이스 연동을 처리할 때 사용되는 SqlMapClient 역시 JDBC 프로그램을 할 때와 마찬가지로 try-catch 블록을 사용해서 예외를 처리해 주어야 한다 . 또한 에러원인에 따라 알..

backend/iBatis 2008.09.01

[iBATIS] 5. Transaction

5. Transaction iBatis 가 지원하는 네 가지 트랜잭션 범위 * 자동 트랜잭션 : 단순한 한 개의 SQL 구문은 명시적으로 구분된 트랜잭션을 필요로 하지 않는다 . * 로컬 트랜잭션 : 간단하고 범위가 좁은 트랜잭션으로 여러 SQL 구문을 포함하지만 단일 데이터베이스에서 수행된다 . * 글로벌 트랜잭션 : 복잡하고 범위가 넓은 트랜잭션으로 여러 SQL 구문을 여러 데이터베이스 혹은 잠재적으로 데이터베이스가 아닌 JMS 의 큐나 JCA 커넥션 같은 다른 트랜잭션이 가능한 리소스상에서 실행된다 . * 사용자 정의 트랜잭션 : 사용자 맘대로 ~ "자동 트랜잭션" 보충 설명. JDBC는 'autocommit(자동커밋)' 모드이고 iBatis는 자동 커밋을 직접 지원하지 않고, 대신 자동 트랜잭션을..

backend/iBatis 2008.09.01

[iBATIS] 4. How to

4. How to 1. 객체를 파라미터로 전달 JavaBeans, Map or primitive wrapper 2. 매핑되는 SQL 문장을 수행 SQL Maps 프레임워크는 PreparedStatment 인스턴스 생성 객체로부터 제공되는 값들을 파라미터로 세팅 3. SQL 문장을 수행하고 ResultSet 으로부터 결과 객체를 생성 . Update 의 경우에는 영향을 받은 rows 수가 반환 쿼리의 경우 하나 혹은 여러 객체들이 반환 결과객체는 자바빈즈 , Map 원시타입래퍼 또는 XML 이 될 수 있다 . SQL Maps 설정파일 -SqlMapConfig.xml

backend/iBatis 2008.08.29

[iBATIS] 1.Overview ~ 3. Introduce iBATIS

iBATIS 1. Overview2. Why use iBATIS?3. Introduce iBATIS4. How to5. Transaction6. iBATIS + Spring7. iBATIS + Spring + transaction8. Annotation 기반으로 JUnit4를 이용한 Spring TDD9. Reference 1. Overview 개발자에게 JavaBeans objects를 PreparedStatement parameters와 ResultMaps로 쉽게 매핑을 할 수 있도록 한다. 이를 통하여 database에 접근하기 위한 자바코드의 양을 줄일수있다.현재 iBatis는 세가지 언어: 자바, C#, Ruby로 구현되어 있다. 2. Why use iBATIS?OR맵핑툴을 사용하지 않을때 하위..

backend/iBatis 2008.08.28

[Spring] 스프링에서 VelocityTools 환경설정

스프링에서 벨로시티 뷰 템플릿 엔진을 사용하고 있는데 여기에 편리한 tools를 사용하기 위해서 필요한 설정을 기억하기 위해 기록합니다. VelocityTools는 벨로시티 템플릿에서 숫자나 날짜, url등의 포맷팅을 지원하는 툴이고, VelocityTools프로젝트에는 GenericTools, VelocityView, VelocityStruts 세개의 부분으로 나눠져 있습니다. 보통 GenericTools를 많이 쓸일이 많기 때문에~ 조금 정리해보면, Generic Tools에는, DateTool A tool for manipulating and formatting dates. MathTool A tool for performing floating point math. NumberTool A tool ..

backend/Spring 2008.03.20

[Spring] 스프링 MVC를 이용한 웹 요청 처리

스프링 MVC를 이용한 웹 요청 처리 구성요소 DispatcherServlet : 클라이언트의 요청을 전달받음. 컨트롤러에게 클라이언트의 요청을 전달하고 컨트롤러가 리턴한 결과 값을 view에 전달하여 알맞은 응답을 생성하도록 한다. HandlerMapping : 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할 지를 결정 Controller : 클라이언트의 요청을 처리한 뒤, 그 결과를 DispatcherServlet에 알려줌. ModelAndView : 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담는다. ViewResolver : 컨트롤러의 처리 결과를 생성할 뷰를 결정 View : 컨트롤러의 처리 결과 화면을 생성 캐릭터 인코딩 처리를 위한 필터 설정 요청 파라미터의 캐릭터 인코딩이 ..

backend/Spring 2008.03.13

[Java] 자바 코딩하다가 실수하는 부분들

알고보면 당연한 내용인데 코딩하다가 자주 하는 실수, Java Code Conventions 내용중에 있군요. 써놓고나면 덜 실수하려나... 출처 : http://java.sun.com/docs/codeconv/ Miscellaneous Practices 10.5.1 Parentheses It is generally a good idea to use parentheses liberally in expressions involving mixed operators to avoid operator precedence problems. Even if the operator precedence seems clear to you, it might not be to others-you shouldn't assume ..

backend/Java 2008.03.03

[Spring] Bean과 BeanFactory의 후처리

빈의 후처리 스 프링은 빈의 생명주기에 끼어들어 빈의 설정을 재검토하거나 바꿀 수 있는 2개의 기회를 제공한다. 후처리는 어떤 이벤트가 발생한 후에 처리되는 것이라고 추측할 수 있다. 이벤트란 빈이 설정되거나 인스턴스화되는 것을 말한다. BeanPostProcessor 인터페이스는 빈이 생성되거나 묶인 후에 변경할 수 있는 두개의 기회를 제공 Interface BeanPostProcessor에서는 두개의 메소드를 제공한다 postProcessBeforeInitialization : 빈이 초기화(afterPropertiesSet(), 빈의 커스텀 init-method 호출)되기 직전에 호출 postProcessAfterInitialization : 빈이 초기화된 직후에 호출 빈 팩토리의 후처리 BeanFa..

backend/Spring 2008.02.12

[Spring] 자동 묶기(Autowire)

자동 묶기(Autowire) 자동 묶기의 네 종류 byName : 묶고자 하는 특성의 이름과 동일한 이름이나 ID를 가진 빈을 컨테이너에서 찾는다. 빈을 찾지 못하면 그 특성을 묶이지 않은 채로 남는다. byType : 묶 고자 하는 특성의 타입과 동일한 타입을 가진 빈을 컨테이너에서 찾는다. 빈을 찾지 못하면 그 특성은 묶이지 않은 채로 남고, 하나 이상의 빈을 찾게 되면 org.springframework.beans.factory.UnsatisfiedDependencyException을 던진다. Constructor : 묶고자 하는 빈의 생성자 중 하나의 파라미터와 맞는 하나 이상의 빈을 컨테이너에서 찾는다. 모호한 빈이나 생성자가 발견될 경우 org.springframework.beans.facto..

backend/Spring 2008.02.12

[Spring] 세터 주입(Setter Injection)의 대안

세터 주입(Setter Injection)의 대안 - 생성자 주입(Constructor Injection) 세터 주입은 빈 특성을 설정하고 묶을 수 있는 직관적인 방법이지만, 한 가지 단점은 변경될 수 있는 모든 특성이 세터 메소드를 통해서 사용할 수 있다고 가정하는 것에 있다. 하지만 빈이 이와 같은 방식으로 작동하기를 원하지 않을 때, 이런 유형의 빈이 인스턴스화될 때에는 어떤 특성도 설정될 수 없으며, 따라서 빈이 유효하지 않은 상태로 있을 가능성이 있다. 어떤 특성들은 빈이 생성될 때 한 번만 설정되고 그 이후에는 변경될 수 없도록 만들고 싶은 경우도 있다. 이는 세터를 통해 모든 특성을 공개하는 경우에는 곤란해진다. 대안은 일부 특성들은 생성자 를 통해 설정될 수 있도록 빈을 설계하는 것이다. ..

backend/Spring 2008.02.05

[Spring] 빈 묶기(Bean wiring)

빈 묶기(Bean wiring) XML로 묶기 : 다음을 이용해 스프링 컨테이너가 XML을 통한 빈 묶기를 지원한다. XmlBeanFactory ClassPathXmlApplicaionContext FileSystemXmlApplicationContext XmlWebApplicationContext 프로토타입과 싱글톤 비교 스프링의 모든 빈은 싱글톤. getBean()의 호출에 의해서든 묶기를 통해서든 간에, 컨테이너가 빈을 배포할 때에는 항상 그 빈의 완전히 동일한 인스턴스를 내줄 것이다. scope="singleton" scope="prototype" 프로토타입 빈을 정의하는 것이 유리할 때 프로토타입을 정의한다는 것은 실제 하나의 빈을 정의하는 것이 아닌, 청사진을 정의한다는 의미다. 그 다음엔 그..

backend/Spring 2008.02.05

[Spring] 스프링 컨테이너의 두 종류

스프링 컨테이너의 두 종류 컨테이너 안의 빈(Bean) 컨 테이너는 스프링 프레임워크의 핵심이다. 스프링 컨테이너는 제어 역행(IoC)을 사용해 애플리케이션을 구성하는 컴포넌트들을 관리한다. 여기에는 협력하는 컴포넌트간의 연관관계를 생성하는 것이 포함된다. 그렇게 함으로써 객체는 좀더 명확하게 이해할 수 있고, 재사용이 가능해지며, 단위테스트가 쉬워진다. 스프링 컨테이너의 두 종류 org .springframework.beans.factory.BeanFactory 인터페이스로 정의되는 빈 팩토리 기본적인 의존성 주입을 지원하는 가장 간단한 형태의 컨테이너 org .springframework.context.ApplicationContext 인터페이스로 정의되는 어플리케이션 컨텍스트. 프로퍼티 파일의 텍스..

backend/Spring 2008.02.05

[Spring] Spring 환경설정

/**************************************************************************스프링 공부하면서 정리한 내용을 그냥 올려봅니다. 혼자 놀다가 중간에 에러난 부분도 기억삼아 올려놓은것이어서 내용이 틀릴수도 있답니다. 이글은 "스프링 인 액션" 책을 열심히 보며 쓴 글입니다~ @author 버리 **************************************************************************/ 프로젝트 설정 1. Spring 다운로드(http://www.springframework.org/download)최신버젼을 다운로드하고, 사용할 JAR파일들을 dist 디렉토리에서 선택한 다음에 빌드 클래스 경로와 애플리케이션 ..

backend/Spring 2008.01.28

XML to JSON

예전에 만들어놓은 XML파일을 JSON 형식으로도 만들어주기 위해 XML을 JSON으로 바꾸는 작업을 하다가, XML을 흔히 JSON으로 많이 바꾸지 않나,, 그러면 뭔가 툴이 있지 않을까? 하고 구글신께 여쭈어보니, 아주 깔끔한 Javascript parser가 있습니다. Thomas Frank 분이 만드신거 같은데, 블로그에 가보니 아주 편리하게 XML을 넣으면 JSON으로 바꾸어 결과를 보여줍니다. Javascript를 다운로드 할 수 도 있습니다. GNU 에 의한 free software입니다. 소스를 받아보니 170줄의 코딩이 있더군요 제가 간단한 XML을 넣어본 결과 JSON으로 잘 변환해줍니다. 하지만, depth가 깊은 XML은 테스트 안해봐서 잘은 모르겠지만, 당분간은 유용할 듯 합니다~..

backend 2007.11.24

[Spring] Hitting the database

* Hitting the database 1) Spring의 DataAccessException java.sql.SQLException은 checked Exception입니다. 즉, 개발자가 try-catch로 잡아줘야 합니다. 이는 코드를 난잡하게 만들수 있습니다. 그리고 SQLException이 제공하는 예외는 Spring에 비해서 매우 종류가 많지 않습니다. DataAccessException은 SQLException이나 HibernateException등과 같이 특정 기술에 의존적인 예외를 던지지 않기때문에, 데이터 접근 인터페이스가 구현에 의존적인 예외가 아닌 스프링의 일반적인 DataAccessException을 던지게 함으로써, 특정한 퍼시스턴스 구현에 결합되는 일을 방지합니다. DataAc..

backend/Spring 2007.11.04

구글꺼야? SearchMash

언제부터 시작된지는 잘 모르겠지만, 전 오늘 발견했는데, UI가 참으로 구글스럽더니, 페이지 어딜봐도 구글에서 한지 모르겠던데, 소유업체가 구글이라 합니다. SearchMash는 웹페이지(블로그포함), 이미지, 비디오, 위키피디아등의 검색결과를 한 화면에 보여줍니다. 다른 검색엔진에서도 모든 결과가 같이 나오기도 했지만, SearchMash처럼 한눈에 직관적으로 보기 참 좋은 것 같습니다. 거기에 Flex로 개발한건지, 아무튼 플래쉬~기반의 버젼과 HTML버젼 두가지 버전이 제공됩니다. 1. Flash기반의 페이지 http://www.searchmash.com/flash/search/#home (정말 깔끔한 첫 페이지, 구글스럽습니다. 정말...이젠 검색버튼도 지워버렸습니다. 키워드치고 엔터만 치면 된다..

backend 2007.10.30

5회 스프링 프레임웍 사용자 모임에 다녀왔습니다.

스프링 프레임웍에 대한 세미나를 1회때인가, 스프링 소개와 IoC할때 가고, 정말 오랫만에 참여한지라 알아들을 수 있을 것인가, 염려와 함께 도곡역으로 향하였습니다. 장소는 도곡역 IBM 온디맨드 홀에서 열렸는데, 입구부터 백기선 님이 안내를 해주시더군요.국민대에서 할때 보다 훨씬 찾기 쉽고 더 집중이 잘 된 장소더군요^^ 1. 이일민님의 Spring Web Flow의 발표내용과 검색내용을 정리한 것 (차분하고, 듬직(?)하신 목소리로 너무 어렵지 않게 머릿속에 잘 들어왔습니다. ) Spring Web Flow (SWF) is an emerging module of The Spring Framework. The module is part of Spring’s web application developme..

backend 2007.10.28

Google Developer Night에 다녀와서,,

얼마전 구글 블로그에 접수를 받는다는 내용이 떴었는데, 몇시간만에 매진이라는 사태가 발생하여, 실로 구글의 위력을 실감하였습니다. 강연주제는 Google Gadgets API Future of the Internet Google Maps API Web 2.0 이었는데 Future of the Inter을 발표하시는 빈트 서프(Vint Cerf) - 구글의 부사장 & Chief Internet Evangelist 와 Web 2.0을 조금이나마 듣고싶어서 신청을 하였습니다. 모든 주제가 영어로 진행되지만 동시통역이 있어서 별 어려움없이 잘 들었습니다. 똑딱이 카메라가 있어서 사진을 찍었더라면 좀더 현장감이 있었을텐데,, 아쉬운대로 핸드폰 카메라로 찍었지만, 상태가 그다지 좋지 않아서 생략합니다. 인상깊었던 ..

backend 2007.10.17

Derby에서 paging구현..

JavaDB인 Derby에서 원하는 행부터 원하는 행까지 출력하고 싶어 막연하게 Oracle에서 rownum을 쓰듯 where절에 rownum > 1 .... 이렇게 썼더니, 당연히 rownum이란게 없다고 나오더라구요.. 설마, Oracle에서 rownum, Mysql에서 LIMIT가 derby에 없을까? 쭉~~찾아보니 역시나 없다는 문서를 발견.ㅠㅠ ONJava.com의 Tuning Derby의 내용중... Many database servers support specialized SQL constructs that can be used to retrieve a specified subset of query results. For example, in MySQL you'll find the LIMIT..

backend 2007.09.03