歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Hibernate的簡單示例

Hibernate的簡單示例

日期:2017/3/1 9:10:21   编辑:Linux編程

首先我們新建一個項目,Java項目或者是Javaweb項目都可以,然後把hibernate需要的jar導入,我用的jar包如下:

然後新建一個實體類Teacher.java並添加get和set方法:

 1 public class Teacher {
 2     private String username;
 3     private String password;
 4     private int age;
 5     public String getUsername() {
 6         return username;
 7     }
 8     public void setUsername(String username) {
 9         this.username = username;
10     }
11     public String getPassword() {
12         return password;
13     }
14     public void setPassword(String password) {
15         this.password = password;
16     }
17     public int getAge() {
18         return age;
19     }
20     public void setAge(int age) {
21         this.age = age;
22     }
23 }

在Hibernate中一個實體類對應一個.hbm.xml文件,因此我們新建一個Teacher.hbm.xml文件,內容如下:

 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 
 6 <hibernate-mapping package="com.hibernate.domain">
 7     
 8     <class name="Teacher" table="Teacher">
 9          <id name="username" type="java.lang.String" column="username">
10             <generator class="assigned"/>
11         </id> 
12         <property name="password" type="java.lang.String" column="password" length="50"/>
13         <property name="age" type="int" column="age" length="10"/>
14     </class>
15     
16 </hibernate-mapping>

其中第9-11行代表的是主鍵的配置,name是指實體類中的字段,而column則是指數據庫中相對應的字段。<genetator>中的class="assigned"代表主鍵非自動增長。下面的<property>則是配置的非主鍵。此文件和實體類在同一個包中。

之後我們需要在src目錄下新建一個hibernate.cfg.xml文件,並將實體類對應的Teacher.hbm.xml文件導入,代碼如下:

 1 <!DOCTYPE hibernate-configuration PUBLIC
 2     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 3     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 4 
 5 <hibernate-configuration>
 6     <session-factory>
 7         <!-- 配置數據庫信息 --> 
 8         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
 9         <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
10         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
11         <property name="connection.username">root</property>
12         <property name="hibernate.connection.password"></property>
13 
14     
15         <!-- 導入映射文件--> 
16         <mapping resource="com/hibernate/domain/Teacher.hbm.xml"/>
17     </session-factory>
18 </hibernate-configuration>

第7-12行為配置數據庫的基本信息,當然大家用的時候需要改一下11、12行,改成自己數據庫對應的用戶名和密碼。

接下來我們寫一個查詢的方法和插入的方法TeacherDao.java:

 1 public class TeacherDao {
 2     //讀取配置文件
 3     Configuration congif = new Configuration().configure();
 4     //創建sessionFactory
 5     SessionFactory sf = congif.buildSessionFactory();
 6     //創建session
 7     Session session = null;
 8     //創建事務(Hibernate必須用事務)
 9     Transaction tx = null;
10     //插入一條數據
11     public void insert(Teacher teacher) {
12         try {
13             //打開session
14             session = sf.openSession();
15             //開啟事務
16             tx = session.beginTransaction();
17             //進行持久化操作(添加,刪除,更新)
18             session.save(teacher);
19             //提交事務
20             tx.commit();
21         } catch (Exception e) {
22             //事務回滾
23             tx.rollback();
24         } finally {
25             if (session != null)
26                 session.close();
27         }
28 
29     }
30     //查詢數據
31     public List<Teacher> find(String hql) {
32         List<Teacher> teacher=new ArrayList<Teacher>();
33         try {
34             session = sf.openSession();
35             tx = session.beginTransaction();
36             //使用hql語句進行查詢
37             Query query=session.createQuery(hql);
38             //返回list
39              teacher=query.list();
40             tx.commit();
41         } catch (Exception e) {
42             tx.rollback();
43         } finally {
44             if (session != null)
45                 session.close();
46         }
47         return teacher;
48   }
49 }

當然如果我們的src目錄下的hibernate.cfg.xml名稱不為這個,則在第3行讀取配置文件的時候需要加上配置文件的路徑。我們來看一下文件的目錄結構:

我們在Test.java類中進行測試,代碼如下:

 1 public class Test {
 2 
 3     public static void main(String[] args) {
 4         /**
 5          * 利用Hibernate的save方法進行持久化操作
 6          */
 7         Teacher t=new Teacher();
 8         t.setUsername("username4");
 9         t.setPassword("root4");
10         t.setAge(20);
11         TeacherDao dao=new TeacherDao();
12         dao.insert(t);
13         /**
14          * 使用hql語句進行查詢
15          * @return:將返回結果的username在控制台輸出
16          */
17         String hql="from Teacher";
18         List<Teacher> teacher=dao.find(hql);
19         for (int i = 0; i < teacher.size(); i++) {
20             System.out.println(teacher.get(i).getUsername());
21         }
22     }
23 
24 }

當然不要忘記數據庫中的表,我們可以根據Teacher.java中的字段建立,完成之後我們就可以在Test.java中運行一下看看結果了。

Copyright © Linux教程網 All Rights Reserved