Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。
首先搭建环境:
一、导入jar包。
1.hibernate的jar包
2.jdbc的jar包
二、配置Hibernate。建立hibernate.cfg.xml文件
相关的内容:
1.hibernate.cfg.xml -- 包所在的文件夹的project里去搜索复制
2.每个配置项的值:project/etc/hibernate.properties中搜索
新建hibernate.cfg.xml
<!-- ~ Hibernate, Relational Persistence for Idiomatic Java ~ ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. --> <!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> <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/mydb?characterEncoding=GBK</property> <property name="show_sql">true</property>//显示sql语句,为true则显示,false为不显示 <!-- 表映射加载 --> <mapping resource="com/model/Fruit.hbm.xml"/> </session-factory> </hibernate-configuration>
ORM
三、准备数据库
四、准备实体(建议使用:引用类型。建议类名属性名与列名一致)
五、准备映射文件 实体类名.hbm.xml 例:Fruit.hbm.xml
方法:从project文件夹中搜索hbm.xml。复制改
在hibernate.cfg.xml下,加上<mapping resouse="映射文件路径"/>映射
新建Fruit.hbm.xml
<?xml version="1.0"?> <!-- ~ Hibernate, Relational Persistence for Idiomatic Java ~ ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. --> <!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.model"> <class name="Fruit" table="Fruit"> <id name="ids">//主键 <generator class="assigned"/> </id> <property name="name"/>//非主键 <property name="price"/> <property name="source"/> <property name="numbers"/> <property name="image"/> </class> </hibernate-mapping>
新建一个测试类test.java
package com.test; import java.util.List; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.*; import com.model.Fruit; public class Ceshi { public static void main(String[] args) { // TODO 自动生成的方法存根 Configuration config = new Configuration().configure();//读取hibernate.cfg.xml的配置,加载Hibernate的类库 SessionFactory factory= config.buildSessionFactory();//根据配置,生成session工厂 Session session = factory.openSession();//用工厂来生成session //System.out.println(session.isConnected()); //insert // Fruit f = new Fruit(); // f.setIds("s001"); // f.setName("猕猴桃"); // f.setPrice(10.0); // f.setNumbers(200); // session.beginTransaction();//事务开始 // session.save(f);//用session保存到数据库 // session.getTransaction().commit();//事务提交 //select
// 查单条记录 // Fruit f= new Fruit(); // // f=session.get(Fruit.class,"s001"); // System.out.println(f.getIds()+f.getName()+f.getNumbers()); //查所有 // List<Fruit> list= session.createQuery("from Fruit").getResultList(); // for(Fruit f:list){ // System.out.println(f.getIds()+f.getName()+f.getNumbers()); // } //delete // Fruit f = session.get(Fruit.class, "s001"); // if(f!=null){ // session.beginTransaction(); // session.delete(f); // session.getTransaction().commit(); // } //update Fruit f = session.get(Fruit.class, "k007"); if(f!=null){ session.beginTransaction(); f.setName("香蕉大棒子"); f.setNumbers(200); session.update(f); session.getTransaction().commit(); } session.close(); } }
声明:
这里的session不是web中的session.
web中的session代表的是客户端与web服务器之间的会话
这里的session指的是程序与数据库之前的会话,它是由hibernate进行管理的
所有评论(0)