Spring注釈統合(hibernate+mybatis)学習ノート


Springのコメント
ビーズプロファイルのコメント
ビーンファイルに注釈を付ける;クラスの上で、使用します.
@Component(「xml中のid」)はビーンを登録することを表します.
@Resource prvate Session Factory sf;外部ファイルに依存していることを表します.
業務対象への依存度は、例えば、epetService;@Resource prvate IPetDao petdao;(setしないで、get方法があります.)
業務操作対象(事務機能を有する事業対象の注釈)
@srping注釈をスキャンする
 
    <context:component-scan base-package="com.my">
    context:component-scan>

    
    <tx:annotation-driven transaction-manager="transactionManager"/>
   
@Repository("name")
   (Action)
@Controller
   
@Service

@Resource(name="")
            Bean   ,     name;
      name        ? type?

       ,propagation        ,
@transactional(propagation=Propagation.required,readonly=true)

@Autowired    ,   @Resource

@Qualifier("name")   @Resource(name="name")
ハイベルナーとMyBatisを同時に使用します.



<bean id="dbcp_dateSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${driver}">property>
        <property name="url" value="${url}">property>
        <property name="username" value="${username}">property>
        <property name="password" value="${password}">property>
        <property name="defaultAutoCommit" value="false">property>
        <property name="initialSize" value="5">property>
bean>


<bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        
        <property name="dataSource" ref="dbcp_dateSource">
        property>

        
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.show_sql">trueprop>
                <prop key="hibernate.format_sql">trueprop>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialectprop>
            props>
        property>

        
        <property name="packagesToScan" value="com.my.pet.model">property>

    bean>

    
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory">property>
    bean>

    


beans> 

コードの中で、Mybatis&Hibernateを同時に実現します.
両者の違いはSession工場の違いですので、SpringにSession FactoryBean二つを登録できます.それぞれHibernateとMybatisサービスを聞きます.ちょうど二つのSession工場は違う種類に属しています.一つはsql Session Factoryで、一つはsession Factoryで、名前からも衝突を避けました.
以下のように実現します
@Repository("diaryDao4Hib")
public class DiaryDaoImpl extends SqlSessionDaoSupport implements IDiaryDao {
    @Resource
    private SessionFactory sessionFactory;
    //            ,  ,      ,    SqlSessionDaoSupport;
    private SqlSessionFacoty sqlSessionFactory;

    // dao      ,     sessionFactory;    sqlSessionFactory;

    /**
    *    
    */
    @Override
    public Diary getDairyById(int diaryId) {

        return getSqlSession().selectOne("getDiaryById",diaryId);

    }

    /**
    *    
    */
    @Override
    public void addDiary(Diary diary) {
        Session session = sessionFactory.getCurrentSession();
        session.save(diary);
    }

}