orm选型,为什么选择mybatis?
1、JDBC
Class.forName("com.mysql.jdbc.Driver"); Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/demo", "root", "123456"); PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql); pstmt.setString(1, ""); pstmt.executeUpdate(); pstmt.close(); conn.close();
传统的JDBC做一次数据库操作,需要4个操作,类加载、获取连接、执行sql、关闭连接。 它的工作量大,业务和技术混合在一起,并且需要手动关闭连接。对于使用者来说,它非常不友好。
2、什么是ORM模型?
orm英文意思是对象关系映射 Object-relation-mapper,简单理解就是将数据库表与java实体对象做一个映射。
orm的优点:符合面向对象编程;技术与业务解耦,开发时不需要关注数据库的连接与释放;
常用的orm模型有:hibernate和mybatis,互联网公司一般都使用mybatis。
hibernate的缺点:全表映射;无法自定义组装sql;对复杂sql的支持弱,对sql调优不友好;不支持存储过程;性能差。
hibernate的优点:适合小型系统,开发快。
3、mybatis的优缺点
优点:基于底层sql,sql优化方便;容易学习,高度灵活;
缺点:代码量大【可利用MGB —— mybatis代码生成器】
4、mybatis的三要素
mapper.xml、dao接口、entity实体类。
5、mybatis一次连接
SqlSessionFactoryBuilder:读取配置信息创建SqlSessionFactory,它的生命周期仅仅限于创建。
SqlSessionFactory:它用来创建Sqlsession。它的生命周期是整个应用,在应用启动时创建,应用停止时消亡。
Sqlsession:一次sql会话,可以直接发送sql执行,也可以调用dao与mapper映射的sql语句执行,它是线程不安全的,必须保证线程独享。
6、mybatis的配置方式
基于xml:即编写mapperXml文件。
基于注解:即利用@Select @Insert @update 等等。 这种方式基本上不使用。它有很多缺点:编写负责,主要是字符串拼接麻烦,不易于编写负责sql语句;如果业务变动,代码调整幅度太大,即不易于扩展,伸缩性差。