hibernate框架環境搭建與使用
阿新 • • 發佈:2018-11-26
文章出處:https://www.cnblogs.com/hq233/p/6497985.html
搭建環境
一、新建一個專案 , 導包 一個是hibernate的jar包,一個是jdbc的jar包
hibernate的jar包
這些jar包全部匯入
二、配置Hibernate。
1.建立hibernate.cfg.xml檔案, 包所在的資料夾的project裡去搜索cfg.xml複製並修改
2.配置hibernate.cfg.xml檔案
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 資料庫方言 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><!-- 引用jdbc包 --> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password"></property> <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/myzy?characterEncoding=GBK</property> <!-- 資料庫連結 --> <property name="show_sql">true</property> <!-- true 執行完在控制檯列印SQL語句 --> <!-- 表對映載入 --> <mapping resource="com/itnba/maya/model/Fruit.hbm.xml"/> </session-factory> </hibernate-configuration>
3.每個配置項的值可以從project/etc/hibernate.properties中搜索
三、準備資料庫
四、準備實體(建議使用:引用型別。建議類名屬性名與列名一致)
package com.itnba.maya.model; public class Fruit { public String getIds() { return ids; } public void setIds(String ids) { this.ids = ids; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Double getPrice() { return price; } public void setPrice(Double price) { this.price = price; } public String getSource() { return source; } public void setSource(String source) { this.source = source; } public Integer getNumbers() { return numbers; } public void setNumbers(Integer numbers) { this.numbers = numbers; } public String getImage() { return image; } public void setImage(String image) { this.image = image; } private String ids; private String name; private Double price; private String source; private Integer numbers; private String image; }
五、準備對映檔案 實體類名.hbm.xml 例:Fruit.hbm.xml
1.建立:實體類名.hbm.xml檔案。包所在的資料夾的project裡去搜索hbm.xml複製並修改
要跟實體類放一個包裡
2.配置實體類名.hbm.xml檔案
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping default-lazy="false" package="com.itnba.maya.model"> <!-- 匯入包 --> <class name="Fruit" table="Fruit"> <!-- 表名 --> <id name="ids"> <!-- 主鍵 --> <generator class="assigned"/><!-- 如果主鍵是自增長改為class="native" --> </id> <!-- 對應的各個欄位名 --> <property name="name"/> <property name="price"/> <property name="source"/> <property name="numbers"/> <property name="image"/> </class> </hibernate-mapping>
六、寫程式碼
說明:這裡的session不是web中的session。
web中的session代表的是客戶端與web伺服器之間的會話。
這裡的session指的是程式與資料庫之前的會話,它是由hibernate進行管理的。
新增
package com.itnba.maya.test; import java.util.List; import org.hibernate.*; import org.hibernate.cfg.*; import com.itnba.maya.model.Fruit; public class AA { public static void main(String[] args) { //讀取hibernate.cfg.xml的配置,載入Hiberna的類庫 Configuration config=new Configuration().configure(); //根據配置,生成session工廠 SessionFactory factory= config.buildSessionFactory(); //用工廠生成session Session session =factory.openSession(); //新增 //1.造物件 Fruit data = new Fruit(); data.setIds("s002"); data.setName("芒果"); data.setSource("博山"); data.setPrice(10.0); data.setNumbers(200); data.setImage("無"); //2.用session.save()儲存到資料庫了 try{ session.beginTransaction(); session.save(data); session.getTransaction().commit(); } catch(Exception ex){ session.getTransaction().rollback(); } session.close(); } }
查詢
package com.itnba.maya.test; import java.util.List; import org.hibernate.*; import org.hibernate.cfg.*; import com.itnba.maya.model.Fruit; public class AA { public static void main(String[] args) { //讀取hibernate.cfg.xml的配置,載入Hiberna的類庫 Configuration config=new Configuration().configure(); //根據配置,生成session工廠 SessionFactory factory= config.buildSessionFactory(); //用工廠生成session Session session =factory.openSession(); //查詢 //查單條資料 Fruit data=session.get(Fruit.class, "k001"); System.out.println(data.getName()+data.getPrice()+data.getNumbers()); //查詢所有資料 List<Fruit> list = session.createQuery("from Fruit").getResultList(); for(Fruit a:list){ System.out.println(a.getName()+a.getPrice()+a.getNumbers()); } session.close(); } }
控制檯顯示
刪除
package com.itnba.maya.test; import java.util.List; import org.hibernate.*; import org.hibernate.cfg.*; import com.itnba.maya.model.Fruit; public class AA { public static void main(String[] args) { //讀取hibernate.cfg.xml的配置,載入Hiberna的類庫 Configuration config=new Configuration().configure(); //根據配置,生成session工廠 SessionFactory factory= config.buildSessionFactory(); //用工廠生成session Session session =factory.openSession(); //刪除 //先查出 Fruit data = session.load(Fruit.class,"k002");//get和load都可以查 if(data!=null){ session.beginTransaction(); //刪除提交資料庫 session.delete(data); session.getTransaction().commit(); } session.close(); } }
修改
package com.itnba.maya.test; import java.util.List; import org.hibernate.*; import org.hibernate.cfg.*; import com.itnba.maya.model.Fruit; public class AA { public static void main(String[] args) { //讀取hibernate.cfg.xml的配置,載入Hiberna的類庫 Configuration config=new Configuration().configure(); //根據配置,生成session工廠 SessionFactory factory= config.buildSessionFactory(); //用工廠生成session Session session =factory.openSession(); //修改 //1.查 Fruit data = session.load(Fruit.class,"s002"); if(data != null){ session.beginTransaction(); //2.改 data.setName("哈密瓜"); data.setPrice(11.1); data.setNumbers(99); //3.提交 session.update(data); session.getTransaction().commit(); } session.close(); } }