이 블로그 검색

레이블이 spring인 게시물을 표시합니다. 모든 게시물 표시
레이블이 spring인 게시물을 표시합니다. 모든 게시물 표시

2012년 7월 25일 수요일

Spring Remote (RMI) 예제


오늘 살펴볼 스프링 Remote 중에서 RMI 지원은 단순한 POJO 작성만으로도 RMI 서비스를 간편하게 발행할 수 있게 해준다. 간단한 예제를 작성해보자. 일단 프로그램은 java application 으로 하였다. RMI를 통한 통신이므로 서버 및 클라이언트 2개 프로젝트를 만들어야 한다. 먼저 서버를 만든다.

* 서버 작성 *

소스코드는 다음을 참조한다. https://github.com/jeremyko/MySpringRMI

1. Eclipse 에서 신규 프로젝트를 생성한다.

File -> New -> java project -> "MySpringRMI" 프로젝트 생성. 그리고 스프링 관련된 라이브러리들을 프로젝트 속성 -> Java Build Path -> Libraries 에 모두 추가한다.

2. 스프링 설정파일을 다음과 같이 설정한다.

// spring_conf.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:p="http://www.springframework.org/schema/p"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

  <bean class="org.springframework.remoting.rmi.RmiServiceExporter"
    p:service-ref="helloService"
    p:serviceName="HelloService"
    p:serviceInterface="kojh.spring.rmi.HelloService" />

  <bean id="helloService" class="kojh.spring.rmi.HelloServiceImpl"/>
</beans>

<!-- p:registryPort="1107" -->

service-ref 에는 서비스를 담당할 bean 즉, helloService로 설정한다. serviceName 속성을 통해서 RMI 서비스명을 HelloService 로 설정한다, 나중에 보게 되겠지만 이것을 참조해서 client가 이 서비스를 호출하게 된다. serviceInterface 는 해당 서비스가 구현하고 있는 인터페이스를 설정한다. 참고로, 기본적으로 RMI가 사용하는 포트는 1099 이다. 이값을 변경하기 위한 속성은 registryPort 이다.

3. 서비스 인터페이스를 정의한다.

// HelloService.java
package kojh.spring.rmi;

public interface HelloService
{
    String sayHello(String name);
}

2012년 7월 24일 화요일

MyBatis-Spring : mapper interface 와 annotation을 활용한 게시판 예제


MyBatis-Spring : mapper interface 와 annotation을 활용한 게시판 예제

지난번 MyBatis-Spring 에 대한 소개 에 이어서, 이를 활용한 간단한 게시판 작성 예제를 작성해본다. XML파일에 맵핑을 정의하지 않고, mapper interface 와 annotation을 이용해서 처리하는것으로 해봤다. 게시판은 전체 목록 출력, 검색기능, 내용보기 및 수정, 삭제등의 아주 기본적인 기능만을 다루고 있다. 이 프로젝트의 소스는 다음 위치에 있으니 참조하시길 바란다.
https://github.com/jeremyko/SpringMvcBoardMyBatis

1. 우선 기본적인 스프링 MVC 프로젝트를 생성한다. 
간단하게 설명하기 위해서 스프링 환경 설정 부분은 생략했다. 일단 사용된 툴만 적어 보면 다음과 같다 (환경들은 알아서들 잘 맞추시길..자바는 환경 설정이 제일 어려운것 같다.^^).

- Eclipse Indigo(3.7)
- apache-tomcat-7.0.27
- Maven Integration for Eclipse
- SpringSource Tool Suite (STS) for Eclipse Indigo(3.7) 

- 데이터베이스: oracle 11g XE
사용된 이클립스 플러그인은 help -> Eclipse Marketplace 에서 검색.

이클립스 file -> new -> others -> SpringSource Tool Suite -> Spring Template Project -> Spring MVC Project 로 프로젝트를 생성.
그다음 pom.xml 파일을 열어서 dependency에 mybatis-spring 을 추가한다
    <!-- MyBatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.1.1</version>
    </dependency>


추가된 dependency를 반영하기 위해서 Run As -> Maven install을 수행한다.

Run As -> Run on Server로 생성된 프로젝트가 정상 작동 하는지 확인하기 바란다.
Hello World 라고 큼지막하게 웹 페이지가 뜨면 성공이다.

2. 게시판 테이블 및 seq 생성
이 예제에서는 오라클을 이용하고 있다. XE버전은 무료라서 개인이 사용하기에 좋은것 같다. 단지 단점이라면 리소스를 많이 잡아먹는다 (500 MB 메모리 사용). 이클립스가 사용하는 리소스도 상당한데, Oracle까지 돌리면 기본 1GB 정도는 그냥 두놈이 차지하게 된다. 컴에 램이 4GB 는 되어야 좀 돌릴만하다. 만약 다른 DB를 사용한다면, 아래의 내용을 참조로 수정이 필요할 수도 있겠다.

    CREATE SEQUENCE   "SEQ_ID"  MINVALUE 1 MAXVALUE 99999999999
    INCREMENT BY 1 START WITH 1 ;

    CREATE TABLE  "SPRING_BOARD"
    (
       "ID" NUMBER(10,0) NOT NULL,
       "SUBJECT" VARCHAR2(50),
       "NAME" VARCHAR2(50),
       "CREATED_DATE" DATE,
       "MAIL" VARCHAR2(50),
       "MEMO" VARCHAR2(200),
       "HITS" NUMBER(10,0),
        PRIMARY KEY ("ID") ENABLE
    ) ;


2012년 7월 17일 화요일

MyBatis-Spring




********************************************************************************
Getting Started
********************************************************************************


- 설치

MyBatis-Spring 을 이용하기 위해서는 mybatis-spring-x.x.x.jar 과 그 dependency들을 클래스 패스에 추가해야 한다. Maven을 사용중이라면 pom.xml 에 다음 dependency 를 추가한다.

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-spring</artifactId>
  <version>x.x.x</version>
</dependency>

- Quick Setup

스프링 어플리케에션 컨텍스트에는 기본적으로 다음 2가지가 필요하다.

1. SqlSessionFactory
2. 최소 하나이상의 mapper interface

SqlSessionFactory를 생성하기 위해 SqlSessionFactoryBean 이 사용된다. 즉 다음처럼 스프링 설정파일에 선언해야 한다.

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource" />
</bean>

데이터 소스가 필요한것을 잊지 말것. 그 다음 Mapper Interface 가 필요하다.

public interface UserMapper {
  // mapper XML 파일 대신 annotation 사용가능!
  @Select("SELECT * FROM users WHERE id = #{userId}")
  User getUser(@Param("userId") String userId);
}

2012년 7월 5일 목요일

spring3 + Hibernate4 예제

******************************************************************
hibernate4 예제
******************************************************************



최근의 자바 개발 환경에 약간이라도 익숙해져 볼 맘으로 작성해 보았다. 그런데 보다시피 이 간단한 예제(테이블에 insert) 하나를 수행하기 위해서도 설정할것, 알아야 할것이 많다. 10년전쯤 자바 개발 하다가 이런 설정과 환경에 질려버렸던것 같은데 지금도 별로 좋아진것 없는것 같다.  수많은 설정...설정.... 



간단한 고객 데이터를 테이블에 저장하기 위한 예제를 작성해본다.사용된 개발환경은 다음과 같다
- hibernate-release-4.1.3.Final
- 데이터베이스: oracle 11g XE