2013년 10월 31일 목요일

1998년부터 운영된 오라클자바커뮤니티(www.oraclejavanew.kr)에서 설립 운영되고 있는 오엔제이 프로그래밍실무학원(www.onjprogramming.co.kr )은 개발자를 위한 SKILL UP, 실무개발교육 6년차 교육센터 입니다.

자바, 자바프레임워크(Struts, Spring), ORM(MyBatis, Hibernate), 오라클, SQL, 튜닝, 모델링, 고급SQL, Xinternet(GAUCE, Miplatform, XPlatform), 닷넷(C#, ASP.Net, MVC), 스마트폰앱개발교육(안드로이드, 아이폰)까지 실무전문 교육을 진행하고 있습니다.(본원은 TOBESOFT에서 공인 교육기관 입니다.)

IT 프로그래밍 교육을 받으셨는데 이론으로 교육을 받으셨다고요? IT프로그래밍 교육은 실전예제, 실습을 통해 이론을 습득을 해야 합니다. 본원은 모든 강좌가 실습을 통해 이론을 취득하는 실습/실무중심 교육 입니다.

2008년 이래 실무개발자 커리큘럼을 만들어 낸지도 5년이 넘었습니다. 대한민국 개발자 분들이 OK할때 까지 개발자분들을 위한 개발자 전용 교육과정을 생산하겠습니다!

한번 방문 하시어 실무전문 교육의 진수를 느껴 보시기 바랍니다.

감사합니다.


 [개강확정강좌]오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr)


[주간]
  [11/4]Spring3.X, MyBatis, Hibernate실무과정
  [11/6]SQL초보에서실전전문가까지


[평일야간]
  [11/1]C#,ASP.NET마스터
  [11/5]iPhone 하이브리드 앱 개발 실무과정
  [11/7]JAVA&WEB프레임워크실무과정
  [11/8]Spring3.X, MyBatis, Hibernate실무과정

[주말]
  [11/2]C#,ASP.NET마스터
  [11/2]Spring3.X, MyBatis, Hibernate실무과정
  [11/2]JAVA&WEB프레임워크실무과정
  [11/9]안드로이드개발자과정

(iBATIS)MyBatis SQL Mapper (마이바티스란)

(iBATIS)MyBatis SQL Mapper (마이바티스란)

참고하세요. 
 
§ 과거 iBATISMyBatis는 버전3부터 바뀌었으며 아파치 재단을 떠나 독립 오픈 소스 프레임워크가 됨
§ 스프링3.0 이전에는 iBATIS 버전2를 기본으로 지원했는데, iBATIS 버전2에서 MyBatis버전3으로의 수많은 변경 사항을 모두 지원하기가 어렵자 스프링은 MyBatis 기본 지원을 중단하고 이를 해결하기 위해 마이바티스팀은 스프링연동 프로젝트를 시작했다. (mybatis-spring)
§ 관계형데이터베이스를 자바의 객체 지향 모델로 매핑한다.
§ 객체지향적 S/W 개발을  위한 SQL기반의 데이터 매핑 솔루션
§ MyBatis Data Mapper 프레임워크는 관계형 데이터베이스에 접근할 때 필요한 자바코드를 현저하게 줄일 수 있도록 해 준다.
§ 간단한 XML서술자를 사용해서 간단하게 자바 빈즈를 SQL statement에 맵핑시킨다.
 
 
§ MyBatis Data Mapper API는 프로그래머에게 자바빈즈 객체를 PreparedStatement 파라미터와 ResultSets으로 쉽게 매핑할 수 있도록 한다
§ 파라미터(자바빈즈, Map 또는 원시 래퍼)로써 객체를 제공한다. 파라미터 객체는 update 문내에 입력 값을 셋팅 하기 위해 사용되거나 쿼리문의 where절을 셋팅 하기 위해서 사용된다.
§ 맵핑된 statement을 실행하면 Data Mapper프레임워크는 PreparedStatement 인스턴스를 생성할 것이고 제공된 파라미터 객체를 사용해서 파라미터를 셋팅한다. 그리고 statement를 실행하고 ResultSet으로부터 결과 객체를 생성한다.
§ update의 경우에 영향을 미친 rows의 숫자를 반환한다. 조회 문일 경우에 한 개(single)의 객체 또는 컬렉션 객체를 반환한다. 파라미터처럼 결과 객체는 자바빈즈, Map 원시타입래퍼또는 XML이 될수 있다.


[개강확정강좌]오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr)

[주간]
  [11/4]Spring3.X, MyBatis, Hibernate실무과정
  [11/6]SQL초보에서실전전문가까지


[평일야간]
  [11/1]C#,ASP.NET마스터
  [11/5]iPhone 하이브리드 앱 개발 실무과정
  [11/7]JAVA&WEB프레임워크실무과정
  [11/8]Spring3.X, MyBatis, Hibernate실무과정

[주말]
  [11/2]C#,ASP.NET마스터
  [11/2]Spring3.X, MyBatis, Hibernate실무과정
  [11/2]JAVA&WEB프레임워크실무과정
  [11/9]안드로이드개발자과정

Spring3.X, MyBatis, Hibernate실무과정 5일 35시간   11-04
JAVA&WEB프레임워크실무과정 33일 99시간   11-07
Spring3.X, MyBatis, Hibernate실무과정 12일 36시간   11-08
자바초보에서안드로이드까지 18일 54시간   11-15
Spring3.X, MyBatis, Hibernate실무과정 5일 35시간   11-02
JAVA&WEB프레임워크실무과정 14일 98시간   11-02

[Spring3.x, Hibernate4.2.3연동하기]스프링3.2, 하이버네이트4.2.3, 스프링강좌

[Spring3.x, Hibernate4.2.3연동하기]스프링3.2, 하이버네이트4.2.3






1. 하이버네이트 다운로드
 다운로드
 www.hibernate.org (hibernate-4.2.3.Final.zip 사용)
 lib : 하이버네이트를 실행 시 필요한 JAR 파일
 project : 각종 소스 코드
 documentation : 문서들
 하이버네이트를 실행하기 위해서는 hibernate4.2.3.jar 파일 뿐 아니라 lib 폴더의 각종 jar 파일이 필요하다.
 물론 이클립스 하이버네이트 플러그인을 설치해도 된다. 현재 Eclipse INDIGO 까지 나와 있다.

2. 준비
 이클립스 ? Spring Project
hibernate4 및 spring 관련 라이브러리 추가
(하이버네이트4 의 경우 스프링 3,1 이상이 필요)
주) 스프링의 Template Project에서 hhibernate Template을 이용하여 하이버네이트 APP 작성가능하나 라이브러리 버전이 맞지 않아 hibernate4 예제와 연동 어려움
    

예제 테이블 작성
  create table myemp (
      empno number ,
      ename varchar2(10)
  )

 
 

3. MyEmp.java
package edu.onj.hibernate;
public class MyEmp {
private int empno;
private String ename;
 public MyEmp() {}
 public MyEmp(int empno, String ename) {
  this.empno = empno;    this.ename = ename;
 }
 public int getEmpno() { return empno;  }
 public void setEmpno(int empno) {this.empno = empno;}
 public String getEname() {
  return ename;
 }
 public void setEname(String ename) {
  this.ename = ename;
 }
}
 
 
4. MyempDao.java

package edu.onj.hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@Repository
@Transactional(propagation=Propagation.REQUIRED)
public class MyEmpDao {
private SessionFactory sessionFactory;
private Session session;
public MyEmpDao() {}
//constructor injection(생성자 주입)
@Autowired
public MyEmpDao(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public Session getSession() {
return sessionFactory.getCurrentSession();
}
public void insertMyEmp(MyEmp myemp) {
getSession().save(myemp);
}
public void deleteMyEmp(int empno) {
getSession().delete(getMyEmpByEmpno(empno));
}
public MyEmp getMyEmpByEmpno(int empno) {
return (MyEmp)getSession().get(MyEmp.class, empno);
}
public void saveMyEmp(MyEmp myemp) {
getSession().update(myemp);
}
}
 
5. myemp.hbm.xml
<?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
    <hibernate-mapping>
    <class    name="edu.onj.hibernate.MyEmp"    table="MyEmp"    lazy="false">
        <id name="empno"  type="java.lang.Integer"   column="empno"  />
        <property  name="ename" type="java.lang.String"  column="ENAME" length="10"/>
    </class>
    </hibernate-mapping>
 
6. spring-hibernate.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:util="http://www.springframework.org/schema/util"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation=
        "http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans.xsd
         http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
         http://www.springframework.org/schema/aop
         http://www.springframework.org/schema/context
         http://www.springframework.org/schema/context/spring-context-3.0.xsd
         http://www.springframework.org/schema/tx
         http://www.springframework.org/schema/tx/spring-tx.xsd
         http://www.springframework.org/schema/util
         http://www.springframework.org/schema/util/spring-util.xsd" >

<!-- Annotation 쓰기 위해서 -->
      <context:annotation-config />
      <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
        <property name="driverClassName"><value>oracle.jdbc.driver.OracleDriver</value></property>
        <property name="url"><value>jdbc:oracle:thin:@localhost:1521:onj</value></property>
        <property name="username"><value>scott</value></property>
        <property name="password"><value>tiger</value></property>
      </bean>
      <!-- Hibernate Session Factory 설정 -->
      <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource"><ref bean="dataSource"/></property>
        <property name="mappingResources">
          <list>
            <value>myemp.hbm.xml</value>
          </list>
        </property>
        <property name="hibernateProperties">
          <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
          </props>
        </property>
      </bean>
      <!-- 트랜잭션 -->
      <tx:annotation-driven transaction-manager="transactionManager" />
      <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
          <property name="sessionFactory" ref="sessionFactory" />
      </bean>
      <!-- MyEmpDAO autowiring  -->
      <bean id="myEmpDao" class="edu.onj.hibernate.MyEmpDao"> </bean>
   </beans>
  
  
7.    SpringHibernateExam.java

public class SpringHibernateExam {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-hibernate.xml");
MyEmpDao myEmpDao = (MyEmpDao)ctx.getBean("myEmpDao");
try {
MyEmp myemp1 = new MyEmp(1, "1길동");
MyEmp myemp2 = new MyEmp(2, "2길동");
MyEmp myemp3 = new MyEmp(3, "3길동");
myEmpDao.insertMyEmp(myemp1);
myEmpDao.insertMyEmp(myemp2);
myEmpDao.deleteMyEmp(1);
myEmpDao.insertMyEmp(myemp3);
MyEmp emp1 = (MyEmp)myEmpDao.getMyEmpByEmpno(3);
System.out.println(emp1.getEmpno() + "::" + emp1.getEname());
myemp2.setEname("2가아니고4");
myEmpDao.saveMyEmp(myemp2);
MyEmp emp2 = (MyEmp)myEmpDao.getMyEmpByEmpno(2);
System.out.println(emp2.getEmpno() + "::" + emp2.getEname());
}
catch (HibernateException e)
        {             e.printStackTrace();         }
        finally        {                }
}
}
 
8. 결과
 
/*
SQL> select * from myemp;

EMPNO ENAME
---------- ----------
    2 2가아니고4
    3 3길동
*/

[닷넷4.0,C#예제]C# 인덱서 예제 소스, 인덱서란, C# indexer


[닷넷4.0,C#예제]C# 인덱서 예제 소스, 인덱서란, C# indexer
 
using System;
public class Animation
{
 private int total;           //총 애니메이션 편수
 private string[] title;      //각 볼륨당 제목
 private string distributor;  //유통사
 private string date;         //제작날짜
 private int price;           //가격
 public Animation(int total, string distributor, string date, int price)
 {
  this.total = total;
  this.title = new string[total];
  this.distributor = distributor;
  this.date = date;
  this.price = price;
 }
 //볼륨의 제목 설정
 public string this[string index]
 {
  get
  {
   switch(index)
   {
    case  "봄" : return title[0];
    case "여름" : return title[1];
    case "가을" : return title[2];
    case "겨울" : return title[3];
    default : return title[0];
   }

  
  }
  set
  {
  
    title[0] =value;
  
  }
 }

 //제작사 정보를 읽어옴
 public string getDistributor()
 {
  return distributor;
 }
 //가격 정보를 읽어옴
 public int getPrice()
 {
  return price;
 }
 //총애니메이션의 수를 알아내는 메소드
 public int getTotal()
 {
  return total;
 }
}
class AniTest
{
 static void Main()
 {
  Animation ani = new Animation(5, "한국애니","10-27-2004", 35000);
  ani["봄"] = "인어공주";
  ani["여름"] = "신데렐라";
  ani["가을"] = "백설공주";
  ani["겨울"] = "바보온달";
 
  Console.WriteLine("배급사: {0}", ani.getDistributor());
  Console.WriteLine("가격: {0}", ani.getPrice());
  Console.WriteLine("----------------------------");
  //for(int i=0; i < ani.getTotal(); i++)
  //{
   Console.WriteLine("Volume{0} : {1}", 1, ani["봄"]);
  //} 
 }
}
 

C#,ASP.NET마스터 8일 56시간   11-06
C#,ASP.NET마스터 18일 54시간   11-01
ASP.NET4.0 MVC 프로그래밍 11일 33시간   11-04
C#,ASP.NET마스터 8일 56시간   11-02
ASP.NET4.0 MVC 프로그래밍 4일 32시간   11-09