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 args
13      */
14     public static void main(String[] args) {
15 
16 
17         //实例化configuration,后面的configure()方法是加载hibernate.cfg.xml文件
18         Configuration conf = new Configuration().configure();
19         //用configuration的对象创建sessionfactory
20         SessionFactory sf = conf.buildSessionFactory();
21         //创建session
22         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         //关闭session
39         sess.close();
40         sf.close();
41 
42     }
43 
44 }

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

 

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

posted on 2014-11-25 08:36  不会熬夜的程序员  阅读(1741)  评论(0编辑  收藏  举报

导航