Intellij IDEA下的第一个Hibernate项目

Posted ixummer的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Intellij IDEA下的第一个Hibernate项目相关的知识,希望对你有一定的参考价值。

转自:http://blog.csdn.net/qq_15096707/article/details/51419304 ,如需转载,请联系原博主。

 

参考:intellij配置hibernate自动生成hbm.xml文件     从零开始用Intellij idea14创建hibernate项目

       下面我要讲的创建方式,可能更加原生态,更加类似于Eclipse下创建Hibernate项目的方式,我想这也有助于对在Intellij IDEA下创建Hibernate项目的理解。

       首先需要在Intellij IDEA下创建一个项目Project,相当于Eclipse下的workspace(工作空间),当然如果你此时选择了创建Hibernate项目的方式,Intellij 在创建Project成功后会在Project下创建这一Hibernate项目。可能看起来有点奇怪,没关系,我们可以把默认创建的东西删除,然后创建我们的Module,相当于Eclipse下的Project。

       创建Module --》选择 Java Enterprise选项卡,点击右侧,勾选Web Application 和 Hibernate,如下:

技术分享图片

       选择右下角的 Configure... ,选择Module Library:

技术分享图片

       点击下一步,输入Module的名称,这里我取名为:Hibernate_00,如:

技术分享图片

       等待 Hibernate 相关jar包下载完毕……

技术分享图片

技术分享图片

       还需要添加mysql-jdbc jar包 和 junit jar包(junit jar包实际中可以不添加,根据实际需要进行添加):

      对Hibernate_00 右键,选择 Open Module Settings,或者按F4:

技术分享图片

技术分享图片

技术分享图片

技术分享图片 选择 From Maven。

技术分享图片

技术分享图片

       以同样的方式下载 junit jar包并进行添加:

技术分享图片

技术分享图片

技术分享图片

技术分享图片

       为方便以后创建Hibernate项目,可以为 hibernate 的配置文件创建模板:

技术分享图片

技术分享图片

技术分享图片

       hibernate.cfg.xml 模板内容如下(实际中应该进行相应的修改):

[html] view plain copy
 
  1. <?xml version=‘1.0‘ encoding=‘utf-8‘?>  
  2. <!DOCTYPE hibernate-configuration PUBLIC  
  3.         "-//Hibernate/Hibernate Configuration DTD//EN"  
  4.         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">  
  5. <hibernate-configuration>  
  6.     <session-factory>  
  7.         <property name="connection.username">root</property>  
  8.         <property name="connection.password"></property>  
  9.         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>  
  10.         <property name="connection.url">jdbc:mysql:///hibernate?useUnicode=true&characterEncoding=UTF-8</property>  
  11.         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  
  12.   
  13.         <property name="show_sql">true</property>  
  14.         <property name="format_sql">true</property>  
  15.         <property name="hbm2ddl.auto">create</property>  
  16.   
  17.         <mapping resource="Students.hbm.xml"/>  
  18.         <!-- DB schema will be updated if needed -->  
  19.         <!-- <property name="hbm2ddl.auto">update</property> -->  
  20.     </session-factory>  
  21. </hibernate-configuration>  


       同样地方式,创建对象/关系映射的配置文件模板,这里创建 entity2.hbm.xml 模板如下(实际中应该进行相应地修改):

[html] view plain copy
 
  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.   
  7.     <class name="Students" table="students">  
  8.         <id name="sid" type="int">  
  9.             <column name="sid"/>  
  10.             <generator class="assigned"/>  
  11.         </id>  
  12.         <property name="sname" type="java.lang.String">  
  13.             <column name="sname"/>  
  14.         </property>  
  15.         <property name="gender" type="java.lang.String">  
  16.             <column name="gender"/>  
  17.         </property>  
  18.         <property name="birthday" type="java.util.Date">  
  19.             <column name="birthday"/>  
  20.         </property>  
  21.         <property name="address" type="java.lang.String">  
  22.             <column name="address"/>  
  23.         </property>  
  24.     </class>  
  25. </hibernate-mapping>  
 
       现在准备工作做好后,我们可以根据模板在src下创建 hibernate 配置文件 hibernate.cfg.xml:(参考:Creating hibernate.cfg.xml
[html] view plain copy
 
  1. <?xml version=‘1.0‘ encoding=‘utf-8‘?>  
  2. <!DOCTYPE hibernate-configuration PUBLIC  
  3.         "-//Hibernate/Hibernate Configuration DTD//EN"  
  4.         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">  
  5. <hibernate-configuration>  
  6.     <session-factory>  
  7.         <property name="connection.username">root</property>  
  8.         <property name="connection.password"></property>  
  9.         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>  
  10.         <property name="connection.url">jdbc:mysql:///hibernate?useUnicode=true&characterEncoding=UTF-8</property>  
  11.         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  
  12.   
  13.         <property name="show_sql">true</property>  
  14.         <property name="format_sql">true</property>  
  15.         <property name="hbm2ddl.auto">create</property>  
  16.   
  17.         <mapping resource="Students.hbm.xml"/>  
  18.         <!-- DB schema will be updated if needed -->  
  19.         <!-- <property name="hbm2ddl.auto">update</property> -->  
  20.     </session-factory>  
  21. </hibernate-configuration>  

       在src下创建 Students 类:
[java] view plain copy
 
  1. import java.util.Date;  
  2.   
  3. /** 
  4.  * Created by DreamBoy on 2016/5/15. 
  5.  */  
  6. //学生类  
  7. public class Students {  
  8.     //1. 必须为公有的类  
  9.     //2. 必须提供公有的不带参数的默认的构造方法  
  10.     //3. 属性私有  
  11.     //4. 属性setter/getter封装  
  12.   
  13.     private int sid; //学号  
  14.     private String sname; //姓名  
  15.     private String gender; //性别  
  16.     private Date birthday; //出生日期  
  17.     private String address; //地址  
  18.   
  19.     public Students() {  
  20.     }  
  21.   
  22.     public Students(int sid, String sname, String gender, Date birthday, String address) {  
  23.         this.sid = sid;  
  24.         this.sname = sname;  
  25.         this.gender = gender;  
  26.         this.birthday = birthday;  
  27.         this.address = address;  
  28.     }  
  29.   
  30.     public int getSid() {  
  31.         return sid;  
  32.     }  
  33.   
  34.     public void setSid(int sid) {  
  35.         this.sid = sid;  
  36.     }  
  37.   
  38.     public String getSname() {  
  39.         return sname;  
  40.     }  
  41.   
  42.     public void setSname(String sname) {  
  43.         this.sname = sname;  
  44.     }  
  45.   
  46.     public String getGender() {  
  47.         return gender;  
  48.     }  
  49.   
  50.     public void setGender(String gender) {  
  51.         this.gender = gender;  
  52.     }  
  53.   
  54.     public Date getBirthday() {  
  55.         return birthday;  
  56.     }  
  57.   
  58.     public void setBirthday(Date birthday) {  
  59.         this.birthday = birthday;  
  60.     }  
  61.   
  62.     public String getAddress() {  
  63.         return address;  
  64.     }  
  65.   
  66.     public void setAddress(String address) {  
  67.         this.address = address;  
  68.     }  
  69.   
  70.     @Override  
  71.     public String toString() {  
  72.         return "Students{" +  
  73.                 "sid=" + sid +  
  74.                 ", sname=‘" + sname + ‘\‘‘ +  
  75.                 ", gender=‘" + gender + ‘\‘‘ +  
  76.                 ", birthday=" + birthday +  
  77.                 ", address=‘" + address + ‘\‘‘ +  
  78.                 ‘}‘;  
  79.     }  
  80. }  

       在src下创建 对象/关系映射的配置文件(根据模板进行创建) Students.hbm.xml
[html] view plain copy
 
  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.   
  7.     <class name="Students" table="students">  
  8.         <id name="sid" type="int">  
  9.             <column name="sid"/>  
  10.             <generator class="assigned"/>  
  11.         </id>  
  12.         <property name="sname" type="java.lang.String">  
  13.             <column name="sname"/>  
  14.         </property>  
  15.         <property name="gender" type="java.lang.String">  
  16.             <column name="gender"/>  
  17.         </property>  
  18.         <property name="birthday" type="java.util.Date">  
  19.             <column name="birthday"/>  
  20.         </property>  
  21.         <property name="address" type="java.lang.String">  
  22.             <column name="address"/>  
  23.         </property>  
  24.     </class>  
  25. </hibernate-mapping>  


       在hibernate.cfg.xml 配置文件中添加Students对象的映射。(前面的配置文件中已添加)

[html] view plain copy
 
  1. <mapping resource="Students.hbm.xml"/>  


       在Module下创建test目录,为了能在该目录中创建java类,需要将目录修改为 Sources Root:

技术分享图片

       此时才可以创建java类:StudentsTest.java

(这里使用到 junit 中的注解 @Test、@Before、@After)

[java] view plain copy
 
  1. import org.hibernate.Session;  
  2. import org.hibernate.SessionFactory;  
  3. import org.hibernate.Transaction;  
  4. import org.hibernate.cfg.Configuration;  
  5. import org.hibernate.service.ServiceRegistry;  
  6. import org.hibernate.service.ServiceRegistryBuilder;  
  7. import org.junit.After;  
  8. import org.junit.Before;  
  9. import org.junit.Test;  
  10.   
  11. import java.util.Date;  
  12.   
  13. /** 
  14.  * Created by DreamBoy on 2016/5/15. 
  15.  */  
  16. //测试类  
  17. public class StudentsTest {  
  18.     private SessionFactory sessionFactory;  
  19.     private Session session;  
  20.     private Transaction transaction;  
  21.   
  22.     @Before  
  23.     public void init() {  
  24.         //创建配置对象  
  25.         Configuration config = new Configuration().configure();  
  26.         //创建服务注册对象  
  27.         ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();  
  28.         //创建会话工厂对象  
  29.         sessionFactory = config.buildSessionFactory(serviceRegistry);  
  30.         //会话对象  
  31.         session = sessionFactory.openSession();  
  32.         //开启事务  
  33.         transaction = session.beginTransaction();  
  34.     }  
  35.   
  36.     @After  
  37.     public void destory() {  
  38.         transaction.commit(); //提交事务  
  39.         session.close(); //关闭会话  
  40.         sessionFactory.close(); //关闭会话工厂  
  41.     }  
  42.   
  43.     @Test  
  44.     public void testSaveStudents() {  
  45.         //生成学生对象  
  46.         Students s = new Students(1, "张三丰", "男", new Date(), "武当山");  
  47.         session.save(s); //保存对象进入数据库  
  48.     }  
  49. }  


       在hibernate.cfg.xml配置文件中,可以知道,这里我配置使用的数据库,名为hibernate,所以我们需要在运行程序前,使用mysql创建好 hibernate 数据库,不用创建Students表。

技术分享图片

       运行 StudentsTest.java ,可能会出现如下错误:

技术分享图片

       大概是java编译输出的位置出错了,所以要对output输出路径进行配置:

       这里选择在当前Module下classes文件夹下:

技术分享图片

       再次运行程序:

技术分享图片

技术分享图片

       程序运行成功,我们可以查看一下数据库,会发现程序已经帮我们自动创建好了数据表,并添加了一条数据:

技术分享图片技术分享图片

       成功运行Hibernate项目。

 







以上是关于Intellij IDEA下的第一个Hibernate项目的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA(各种工程的创建)

如何加快IntelliJ IDEA的文件/目录选择对话框?

IntelliJ IDEA 运行你的第一个Java应用程序 idea运行main方法

IntelliJ idea下的项目结构

IntelliJ idea下的项目结构

IntelliJ IDEA 运行你的第一个Java应用程序