搭建環境
一、新建一個項目 , 導包 一個是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(); } }