首页 > 代码库 > Eclipse下构建hibernate项目流程

Eclipse下构建hibernate项目流程

    折腾了一晚上,搜了很多教程,发现很多教程上讲的在Eclipse下构建hibernate项目的方法还真不一样。仔细琢磨了一下,发现只要搞清楚了hibernate的本质,其实不管什么步骤,结果都一样,简单记录一下。

    1、首先在Eclipse中建立一个Java project,这个是最基本的;

    2、将hibernate所需的包全部导入到构建路径中;

 

    3、编写hibernate.cfg.xml文件,配置数据连接属性;这个步骤可以自己直接编写hibernate.cfg.xml也可以利用Eclipse的插件的图形化界面来完成。该文件放在src文件夹下

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 4         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 5 <hibernate-configuration> 6     <session-factory> 7         <!-- 指定连接数据库所需的驱动 --> 8         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 9      10         <!-- 指定数据库的URL -->11         <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_learn</property>12         13         <!-- 指定数据库的用户名和密码 -->14         <property name="hibernate.connection.password">123456</property>15         <property name="hibernate.connection.username">root</property>16         17         <!-- 指定数据库方言,因为hibernate可以管理很多数据库,各种数据库之间的sql会有一些不同,所以要指定 方言-->18         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>19   20         <!-- 指定数据库连接池中的最大和最小连接数 -->21         <property name="hibernate.c3p0.max_size">20</property>22         <property name="hibernate.c3p0.min_size">1</property>23 24         <!-- 指定数据库连接的超时时长 -->25         <property name="hibernate.c3p0.timeout">5000</property>26  27         <!-- 指定数据库连接池中最大的statement数 -->28         <property name="hibernate.c3p0.max_statements">100</property>29         <property name="hibernate.c3p0.idle_test_period">3000</property>30         <property name="hibernate.c3p0.acquire_increment">2</property>31         <property name="hibernate.c3p0.validate">true</property>32         33         <!-- 指定是否根据hbm文件自动创建数据表 -->34         <property name="hbm2ddl.auto">update</property>35         36         <!-- 指定是否打印sql语句 -->37         <property name="hibernate.show_sql">true</property>38         39         <!-- 罗列所有的映射文件 -->40         <mapping resource="org/crazyit/app/domain/News.hbm.xml"/>41    42    43     </session-factory>44 </hibernate-configuration>

 

    4、编写po类;

 1 package org.crazyit.app.domain; 2  3 public class News { 4  5     //消息类的标识属性 6     private Integer id; 7      8     //消息的标题 9     private String title;10     11     //消息的内容12     private String content;13     14     public Integer getId() {15         return id;16     }17     public void setId(Integer id) {18         this.id = id;19     }20     public String getTitle() {21         return title;22     }23     public void setTitle(String title) {24         this.title = title;25     }26     public String getContent() {27         return content;28     }29     public void setContent(String content) {30         this.content = content;31     }32     33     34 }

 

    5、编写映射文件,xxx.hbm.xml;该文件放置在po的同一个包下

 1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC 3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 5 <hibernate-mapping package="org.crazyit.app.domain"> 6    7   <!-- 每个类对应一个表 --> 8   <class name="News" table="news_table"> 9       10        <id name="id">11        <!-- 指定主键生成策略 -->12        <generator class="identity"></generator>13        </id>14        15        <!-- 指定一般的属性 -->16        <property name="title"></property>17        <property name="content"></property>18   </class>19 </hibernate-mapping>

    6、编写测试类

 1 package test; 2  3 import org.crazyit.app.domain.News; 4 import org.hibernate.Session; 5 import org.hibernate.SessionFactory; 6 import org.hibernate.Transaction; 7 import org.hibernate.cfg.Configuration; 8  9 public class NewsManger {10 11     /**12      * @param args13      */14     public static void main(String[] args) {15 16 17         //实例化configuration,后面的configure()方法是加载hibernate.cfg.xml文件18         Configuration conf = new Configuration().configure();19         //用configuration的对象创建sessionfactory20         SessionFactory sf = conf.buildSessionFactory();21         //创建session22         Session sess = sf.openSession();23         //开始事务24         Transaction tx = sess.beginTransaction();25         26         //创建消息实例27         News n = new News();28         29         n.setTitle("疯狂Java联盟成立了");30         n.setContent("网址是:www.crazyit.com");31         32         //保存消息33         sess.save(n);34         35         //提交事务36         tx.commit();37         38         //关闭session39         sess.close();40         sf.close();41 42     }43 44 }

因为hbm2ddl.atuo为update,因此第一次运行该测试代码,会在数据库中创建相应的表,而第二次运行则只会更新该表。如果将该属性设置为create,那么每次都会创建新表,覆盖原表。

 

【总结】:其实创建hibernate项目最本质的操作只有3步,第一步,导入hibernate的jar吧,这一步无论在什么时候完成都行;第二步,编写配置文件hibernate.cfg.xml;第三步编写po类和相应的映射文件。学知识要懂原理,不然很容易被网上各种参差不齐的教程搞糊涂,多看书本上比较系统的教程,不要自己在网上瞎搞。

Eclipse下构建hibernate项目流程