1.首先创建数据库:(用户名 :root,密码:123456)
create database test;
2.创建表product_,有3个字段:
use test;
create table product_(
id int(11) not null auto_increment,
name varchar(30),
price float,
PRIMARY KEY(id)
)DEFAULT CHARSET=UTF8;
3.准备一个java project.导入hibernate所依赖的jar包。
4.创建实体类Produc,用于映射数据库中的表product_
package com.fubin.pojo;
public class Product {
int id;
String name;
float price;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
}
5.在与实体类同包下新建一个配置文件Product.hbm.xml,用于映射Product类对应数据库中的product_表。
<?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 package="com.fubin.pojo">
<!--类名与实体类名要完全相同-->
<class name="Product" table="product_">
<!--属性id的自增长的方式采用数据库的本地方式-->
<id name="id" column="id">
<generator class="native"></generator>
</id>
<!--只写属性name没有通过column显式指定,那么字段的名字也是name-->
<property name="name"/>
<property name="price"/>
</class>
</hibernate-mapping>
6.在src目录下创建hibernate.cfg.xml配置范文数据库要用到的驱动,url,账号密码等等。
<?xml version='1.0' encoding='utf-8'?>
<!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="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<!--表示使用mysql方言,开发者不需要知道底层使用什么数据库,只需要告诉hibernate底层用的是什么数据库,它才知道该用什么样的方言去对话-->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!--Hibernate事务管理方式,即每个线程一个事务-->
<property name="current_session_context_class">thread</property>
<!--是否在控制台显示执行的sql语句-->
<property name="show_sql">true</property>
<!--是否会自动更新数据库的表结构,可自动创建表结构-->
<property name="hbm2ddl.auto">update</property>
<!--Hibernate会去识别Product这个实体类-->
<mapping resource="com/fubin/pojo/Product.hbm.xml"/>
</session-factory>
</hibernate-configuration>
7.测试类:创建一个Product对象,并通过hibernate把这个对象插入到数据库中
hibernate的基本步骤:
- 获取SessionFactory
- 通过SessionFactory获取一个Session
- 在Session基础上开启一个事务
- 通过调用Session的save方法把对象保存到数据库
- 提交事务
- 关闭Session
- 关闭SessionFactory
package com.fubin.test;
import com.fubin.pojo.Product;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class TestHibernate {
public static void main(String[] args){
SessionFactory factory = new Configuration().configure().buildSessionFactory();
Session s = factory.openSession();
s.beginTransaction();
Product p = new Product();
p.setName("iphoneX");
p.setPrice(10000);
s.save(p);
s.getTransaction().commit();
s.close();
factory.close();
}
}
通过Hibernate(批量)插入数据到数据库:
for(int i = 0 ; i < 10; i++){
Product p = new Product();
p.setName("iphone"+i);
p.setPrice(i);
s.save(p);
}
通过ID获取一个对象:
Product p = (Product) s.get(Product.class,6);
System.out.print("id = 6产品名称:"+ p.getName());
删除一条数据:
Product p = (Product) s.get(Product.class,5);
s.delete(p);
修改一条数据:
Product p = (Product)s.get(Product.class,6);
p.setName("modified");
s.update(p);