• eclipse中SSH三大框架环境搭建<三>


      相关链接: 

      eclipse中SSH三大框架环境搭建<一>
      eclipse中SSH三大框架环境搭建<二>

      引言:通过上两篇文章我们已经可以掌握struts2和spring的环境的搭建以及简单使用,但是在访问数据库层面使用的是传统的JDBC。在我们项目开发中使用JDBC确实是不太理想的,所以今天我给大家来讲解一下目前行业中比较流行的持久层框架——hibernate。

      第1步:我们依旧需要引入hibernate的jar包

      找到hibernate解压好的文件目录,在该目录下的lib目录下有一个required目录,将该目录下的所有jar包引入到我们项目的lib目录下。

      第2步:我们又要和配置文件打交道了,首先我们要配置一个在src目录下的一个实体映射文件entityname.hbm.xml。

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC
     3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
     5 <hibernate-mapping>
     6     <class name="entity.BookCard" table="BookCard">
     7         <id name="cid" column="cid"></id>
     8         <property name="name"  column="name" type="string" length="50" not-null="true"></property>
     9         <property name="sex" column="sex"></property>
    10         <property name="cardDate" column="cardDate"></property>
    11         <property name="deposit" column="deposit"></property>
    12     </class>
    13 </hibernate-mapping>

      解析:1>头信息就不多说了,首先写好一个hibernate-mapping首尾标记,在标记内映射我们相对应的实体类。

         2>在class标记的name属性的值对应我们的实体类(全路径),table属性对应我们在数据库的表名

         3>id标记为我们数据库的主键配置相关信息,同理name属性中的属性值为我们实体类对象的属性,column为数据库对应表的字段。

         4>property标记中type属性为该属性对应的java数据类型,length为数据库中指定长度这里相当于varchar(50),not-null属性为指定该字段是否可以为空,默认可以为空。

      第3步:依旧是写配置文件,配置连接数据库相关信息的hibernate.cfg.xml文件

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <!DOCTYPE hibernate-configuration PUBLIC
     3     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
     4     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
     5 
     6 <hibernate-configuration>
     7     <session-factory name="foo">
     8         <!-- 配置mySql连接参数 -->
     9          <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
    10          <property name="connection.pool_size">5</property>
    11          <property name="show_sql">true</property>
    12          <property name="format_sql">true</property>
    13          <property name="hbm2ddl.auto">update</property>
    14          
    15          <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    16          <property name="connection.url">jdbc:mysql://localhost:3306/CardDB</property>
    17          <property name="connection.username">root</property>
    18          <property name="connection.password">123456</property>
    19          
    20          <mapping resource="BookCard.hbm.xml"/>
    21     </session-factory>
    22     
    23 </hibernate-configuration>

      解析:1>配置一个hibernate-configuration首尾标记,在其内部插入session-factory首尾标记。

         2>在property标记中name属性中指定dialect属性值配置数据库方言(数据库不同以及版本不同方言也不同,查阅相关资料可知)

         3>在property标记中name属性中指定connection.pool属性值配置连接池大小(依据访问频率配置)

         4>在property标记中name属性中指定show_sql属性值配置是否显示sql语句在控制台(开发过程中建议为true,易于调试)

         5>在property标记中name属性中指定format_sql属性值配置sql语句是否需要格式化(废话,当然要)

        * 6>在property标记中name属性中指定hbm2ddl.auto属性值配置创表信息。值为update时,若数据库没有我们实体对应的表将自动为我们创建,若存在则会更新我的表。  值为create时,每次执行时会先查找数据库是否存在这张表存在即先删除在创建,不存在即直接创建。

         7>连接数据库的驱动以及制定数据库URL,用户名和密码相信大家都懂,我就不一一介绍了。

        * 8>我们的这份文件还需映射一个资源便是我们的实体映射文件,在mapping标记中指定。

      第4步:配置完以上文件才是我们hibernate真正为我们服务的时候了,编写我们的dao来操作数据库了。

     1 public class BookCardDaoImpl implements BookCardDao {
     2     
     3     @Override
     4     public List<BookCard> getAllCardInfo() {
     5         //sessionFactory这个实例可以自己按常规的hibernate传统写法创建(不建议)
     6         //可以交给spring去托管
     7         SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
     8         Session session = sessionFactory.openSession();
     9         //后面当使用JPA的时候,EntityManager 类似于 Session
    10         Query query = session.createQuery("from BookCard");
    11         
    12         //这2行代码,后期会交给spring的AOP帮忙处理
    13         List<BookCard> list = query.getResultList();
    14         
    15         session.close();
    16         sessionFactory.close();
    17         return list;
    18     }
    19 }
    View Code

      解析:通过上面的代码我们可以明显看出hibernate的实用性,我们的程序员再也不用写获取连接,获取sql语句的执行对象等等,以及在代码中我们都不需要关心该项目使用的是哪一个数据库了,如此一来大大提高了我们的工作效率。

      页面中的数据已经成功显示

      控制台中执行的hibernate的sql语句也正常显示出来了。

  • 相关阅读:
    关于书签(BookMark)操作;
    清理内存
    string系列操作1
    SQL临时表
    线程,临界区的研究
    Unix 纪元时间
    shell 模仿验证登陆密码
    delphi字符串中取数字
    delphi MD5加密,BASE64加解密
    delphi sendGetIntmessage、sendStructMessage、sendGetStructMessage和sendTextMessage函数的用法
  • 原文地址:https://www.cnblogs.com/1016882435AIDA/p/5852175.html
Copyright © 2020-2023  润新知