JPAとMyBatisを触ってみた感想
JPAのJPQLはパフォーマンスが良いらしい?
とのことで、使ってみましたが、理解が進んでいないためか、あまり使い勝手が良いように感じなかった。。。
MyBatisも触ってみたが、Eclipseのプラグインを使えば、DBからEntityを自動生成してくれる機能は、両方とも持ってるので それだったら、使い慣れてるSQLを利用できる方が便利では?
という感じがしてます。
テーブルへのアクセス定義
テーブルへのアクセス定義
こうして見ると、両者にあまり違いはないように思えた。
パフォーマンスは、JPAの方が良いのかな〜?
なんて思ったりもしますが、結局、好みの問題ですかね〜。
とのことで、使ってみましたが、理解が進んでいないためか、あまり使い勝手が良いように感じなかった。。。
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の方が良いのかな〜?
なんて思ったりもしますが、結局、好みの問題ですかね〜。
コメント
コメントを投稿