最近入門學習Hibernate框架,想分享總結一下踩過的坑和成功後的案例。java
所用軟件:sql
eclipse數據庫
Oracle數據庫 (若是你使用的不是Oracle數據庫能夠修改hibernate.cfg.xml裏面的配置)session
如今,咱們來看一下咱們的包結構和數據庫表結構oracle
第一步:創建eclipse項目app
1.eclipse裏面新建一個Dynamic Web Project項目框架
2.在src中建一個名叫hibernate.cfg.xml的xml文件和兩個分別叫com.Sakura.maya.model和com.Sakura.maya.test的包。eclipse
3.在com.Sakura.maya.model包中建兩個類Hibernate.java和Hibernate.hbm.xml的文件ide
4.在com.Sakura.maya.test包中創建一個叫HibernateAction的類學習
結構以下:
第二步:引入jar包
包名以下:
第三步:建立數據庫
create table Table_wcc_text(
stu_id number(10) primary key,
stu_name varchar2(20) not null,
stu_sex varchar2(20) default 'men' check(stu_sex in('men','women'))
)
結構以下:
第四步:加入代碼
1.Hibernate.java
package com.Sakura.maya.model; public class Hibernate { private int stu_id; private String stu_name; private String stu_sex; public int getStu_id() { return stu_id; } public void setStu_id(int stu_id) { this.stu_id = stu_id; } public String getStu_name() { return stu_name; } public void setStu_name(String stu_name) { this.stu_name = stu_name; } public String getStu_sex() { return stu_sex; } public void setStu_sex(String stu_sex) { this.stu_sex = stu_sex; } @Override public String toString() { return "HibernateAction [stu_id=" + stu_id + ", stu_name=" + stu_name + ", stu_sex=" + stu_sex + "]"; } }
2.Hibernate.hbm.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> <property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property> <!-- 若是不是Oracle數據庫請修改--> <!-- <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> --> <!-- 數據庫方言 若是不是Oracle數據庫請修改--> <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property><!-- 引用jdbc包 若是不是Oracle數據庫請修改--> <property name="hibernate.connection.username">用戶名</property> <property name="hibernate.connection.password">密碼</property> <property name="hibernate.connection.url">jdbc:oracle:數據庫連接</property> <!-- 數據庫連接 --> <property name="show_sql">true</property> <!-- true 執行完在控制檯打印SQL語句 --> <!-- 表映射加載 --> <mapping resource="com/Sakura/maya/model/Hibernate.hbm.xml"/> </session-factory> </hibernate-configuration>
3.hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/hibernate-Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping default-lazy="false" package="com.Sakura.maya.model"> <!-- 導入包 --> <class name="Hibernate" table="Table_wcc_text"> <!-- 表名 --> <id name="stu_id"> <!-- 主鍵 --> <generator class="assigned"/><!-- 若是主鍵是自增加改成class="native" --> </id> <!-- 對應的各個字段名 --> <property name="stu_name"/> <property name="stu_sex"/> </class> </hibernate-mapping>
4.HibernateAction.java
package com.Sakura.maya.test; import java.util.List; import javax.security.auth.kerberos.DelegationPermission; import org.hibernate.*; import org.hibernate.cfg.*; import com.Sakura.maya.model.Hibernate; public class HibernateAction { //讀取hibernate.cfg.xml的配置,加載Hiberna的類庫 Configuration config=new Configuration().configure(); //根據配置,生成session工廠 SessionFactory factory= config.buildSessionFactory(); //用工廠生成session Session session =factory.openSession(); public static void main(String[] args) { HibernateAction dl = new HibernateAction(); dl.SelectAll(); } public void Select(Integer stu_id) { // 查詢 Hibernate data = (Hibernate) session.get(Hibernate.class, stu_id); System.out.println(data.getStu_id() + data.getStu_name() + data.getStu_sex()); } public void SelectAll() { // 查詢全部 String hqlString = "from Hibernate"; Query query = session.createQuery(hqlString); List<Hibernate> list = query.list(); for (Hibernate ll : list) { System.out.print(ll); } session.close(); } public void Insert() { //添加 //1.造對象 Hibernate data = new Hibernate(); data.setStu_id('1'); data.setStu_name("Sakura"); data.setStu_sex("men"); //2.用session.save()保存到數據庫了 try { session.beginTransaction(); session.save(data); session.getTransaction().commit(); System.out.print("添加成功"); } catch (Exception ex) { session.getTransaction().rollback(); } session.close(); } //刪除 public void Delete(Integer stu_id) { //先查出 Hibernate data = (Hibernate) session.get(Hibernate.class, stu_id);// get?�load?�能夠查 if (data != null) { session.beginTransaction(); //刪除提交數據庫 session.delete(data); System.out.print("刪除成功"); session.getTransaction().commit(); } session.close(); } public void update(Integer stu_id) { //修改 //1.查 Hibernate data = (Hibernate) session.load(Hibernate.class, stu_id); if (data != null) { session.beginTransaction(); //2.改 data.setStu_name("Sakura1"); data.setStu_sex("women"); //3.提交 session.update(data); session.getTransaction().commit(); } session.close(); System.out.print("修改爲功"); } }
OK!就搭建成功了!
在搭建之中碰見的小問題:
1.顯示鏈接不到數據庫
解決方法:多是你不是oracle數據庫在hibernate.cfg.xml中修改鏈接方法。
2.報錯:javax/transaction/Synchronization
解決方法:你須要下載一個jta.jar包
3.報錯:找不到hibernate.cfg.xml文件
解決方法:缺乏jar包或者放的位置不對,放在src