JPAとMyBatisを触ってみた感想

JPAのJPQLはパフォーマンスが良いらしい?
とのことで、使ってみましたが、理解が進んでいないためか、あまり使い勝手が良いように感じなかった。。。

MyBatisも触ってみたが、Eclipseのプラグインを使えば、DBからEntityを自動生成してくれる機能は、両方とも持ってるので それだったら、使い慣れてるSQLを利用できる方が便利では?
という感じがしてます。

JPAの場合


テーブルへのアクセス定義
  <named-query name="MProject.findByKey">
    <query>
      SELECT m FROM MProject m WHERE m.projId = :projId
    </query>
  </named-query>
実行
 
  EntityManager em = JPACore.getEntityManager("TestManagerJPA");
  Query query = em.createNamedQuery("MProject.findByKey");
  query.setParameter("projId", "abc");
  MProject mProject = (MProject) query.getSingleResult();

  System.out.print("Proj Id = " + mProject.getProjId());

MyBatisの場合


テーブルへのアクセス定義
  <select id="selectByPrimaryKey" parametertype="String" resultmap="hashMap">
    select * from m_Project where projId = #{projId}
  </select>
実行
  try (Reader r = Resources.getResourceAsReader("mybatis-config.xml");) {

  SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(r);
  SqlSession session = factory.openSession()) {
    MProjectMapper map = session.getMapper(MProjectMapper.class);
    MProject proj = map.selectByPrimaryKey("abc");

    System.out.print("Proj Id = " + mProject.getProjId());
  }


こうして見ると、両者にあまり違いはないように思えた。
パフォーマンスは、JPAの方が良いのかな〜?
なんて思ったりもしますが、結局、好みの問題ですかね〜。

コメント

このブログの人気の投稿

[Music] DTM初心者のためのドラム打ち込み その2

[Swift] StoryBoardを使用しない - UITextFieldで編集不可にする方法

[Swift] UISliderをカスタマイズしてみる