今天着實讓我頭疼的很,在學習hibernate的時候,雖然理解了,但是真實的實例開發起來會遇到很多的問題,就僅僅從數據庫取出屬於顯示出來就讓我遇到了很大的麻煩,從早上忙到晚上,這裏先說問題再說一個系統的開發流程:
首先:我發現建立hibernate.cfg.xml文件的時候,發現在最頂部提示一個警告,這一個警告很煩人,但是,知道現在我還是那他沒有辦法,dtd什麼的都改了,驗證也改了,就是沒辦法,。最後警告請教他人說這個歲項目沒有太大的影響,與是我就徹底的放棄了。
然後就是一個非常大的問題了,當我按部就班的把所有的應用都全部寫完的時候,一點擊運行距提示很多錯誤,是很多錯誤,但是,至少我還是從錯誤裏面獲取了一些有用的信息,就是說我的代碼有問題,當我把代碼改進了之後,代碼還是有問題,最後在錯誤的前面我看到了sl4j的一個jar包引入錯誤,爲什麼是會引入錯誤呢,我明明已經引入進去,但是,沒有辦法,錯了就是錯了,只能大膽的試了一把,假設sl4j的jar包有問題,那麼我就從官網下載的最新的jar包全部更新,結果程序可以正常運行》
下面接着說建立hibernate項目的整個流程:
1;引入jar包,這裏的jar包我已經全部修改整理好了hibernate-3.3.2jar包-已整理
2:建立hibernate.cfg.xml文件,這裏不加贅述:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/hibernate</property>
<property name="connection.username">root</property>
<property name="connection.password">toor</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">update</property>
<mapping resource="com/xuning/demon/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
3:建立數據庫相應表的相關對象:如:
package com.xuning.demon;
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
3:建立對象.hbm.xml配置文件,配置關係對象的映射關係
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.xuning.demon.User">
<id name="id"/>
<property name="username" />
<property name="password" />
</class>
</hibernate-mapping>
4:執行程序:
package com.xuning.demon;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class Usermain {
public static void main(String[] args) {
//實例化一個對象
User user=new User();
//給對象的成員屬性賦值
user.setUsername("xuning7");
user.setPassword("toor");
//實例化configuration對象
Configuration cfg=new Configuration();
//讀取hibernate。cfg.xml配置文件實例化sessionfactory對象
SessionFactory sessionFactory=cfg.configure().buildSessionFactory();
//實例化session並開啓
Session session=sessionFactory.openSession();
//開始施行後事務。hibernate的dml必須執行事務
session.beginTransaction();
//保存對象
session.save(user);
//提交事務
session.getTransaction().commit();
//關閉session
session.close();
//關閉sessionfactory
sessionFactory.close();
}
}