1, 在文档中找到导入7个jar包
hibernate3.jar 核心jar包
lib-required下的全部jar包6个
lib-jpa下的一个jar
2,写一个配置文件config 默认名为hibernate.cfg.xml,可以在project/etc找到 注意头文件和 *hbm.xml是不同的
<?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="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/salary</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">12345678</property> <property name="hibernate.jdbc.batch_size">30</property>
<!--批处理注意30是自定义为后边的批处理做准备-->
<
property
name
="hibernate.show_sql"
>true
</
property
>
<!--查看生成的sql语句-->
<
property
name
="hibernate.format_sql"
>true
</
property
>
<!--将sql语句做格式化(按照数据库语句格式打印)的处理-->
<
mapping
resource
="com/oracle/bean/salary.hbm.xml"
></
mapping
>
<!--mapping 为映射文件 ,rile为绝对路径,resource为相对路径-->
</
session-factory
>
</
hibernate-configuration
>
2,写一个javabean类如Salary,
为了和数据库 做关系映射 ,操作类就是操作表
写一个映射的配置文件格式为 ,一般为类名.hbm.xml
*hbm.xml,如salary.hbm.xml
package com.oracle.bean; public class Salary { private Long workcode; private String uname; private String dept; private Double base_salary; private Double extract; private Double leav; private Double sick; private Double pk; public Long getWorkcode() { return workcode; } public void setWorkcode(Long workcode) { this.workcode = workcode; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public String getDept() { return dept; } public void setDept(String dept) { this.dept = dept; } public Double getBase_salary() { return base_salary; } public void setBase_salary(Double base_salary) { this.base_salary = base_salary; } public Double getExtract() { return extract; } public void setExtract(Double extract) { this.extract = extract; } public Double getLeav() { return leav; } public void setLeav(Double leav) { this.leav = leav; } public Double getSick() { return sick; } public void setSick(Double sick) { this.sick = sick; } public Double getPk() { return pk; } public void setPk(Double pk) { this.pk = pk; } @Override public String toString() { return "Salary{" + "workcode=" + workcode + ", uname='" + uname + '\'' + ", dept='" + dept + '\'' + ", base_salary=" + base_salary + ", extract=" + extract + ", leav=" + leav + ", sick=" + sick + ", pk=" + pk + '}'; } }
2,salary.hbm.xml和javabean类在同级目录
如果当前你的类的属性和表的字段 名称是一致 可以省略掉后台的column
将映射文件写完了之后 需要将映射文件加入到hibernate.cfg.xml
<mapping resource="com/oracle/t_sarlary.hbm.xml"/>
<property name="dept" column="dept"></property>
<property name="base_salary" column="base_salary"></property>
<property name="extract" column="extract"></property>
<property name="leave" column="leav"></property>
<property name="sick" column="sick"></property>
<property name="pk" column="pk"></property>
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- package表示你类名所在位置--> <hibernate-mapping package="com.oracle.bean">
<!--class中的name是类名,table是数据库的表名 id表示主键-->
<
class
name
="Salary"
table
="salary"
>
<
id
name
="workcode"
>
</
id
>
<
property
name
="uname"
></
property
>
<
property
name
="dept"
></
property
>
<
property
name
="base_salary"
></
property
>
<
property
name
="extract"
></
property
>
<
property
name
="leav"
></
property
>
<
property
name
="sick"
></
property
>
<
property
name
="pk"
></
property
>
</
class
>
</
hibernate-mapping
>
一,单个增加
public static void main(String[] args) { //配置文件的解析类configuration Configuration cfg=new Configuration(); //加载核心的配置文件 默认为hibernate.cfg.xml ,cfg.configure("hibernate.cfg.xml"); //配置文件的名字可以改 如:aa.db.xml cfg.configure();//开始解析 //获取连接的工厂 sessionFactory SessionFactory sessionFactory = cfg.buildSessionFactory(); //从工厂中获取一个连接session Session session = sessionFactory.openSession(); //开启事务 session.beginTransaction(); //持久化操作的条件 Salary salry=new Salary(); //int short long L salry.setWorkcode(9l); salry.setUname("111"); salry.setDept("kafa"); salry.setBase_salary(10000d); salry.setExtract(2000d); salry.setLeav(5000d); salry.setSick(500d); salry.setPk(200d); //sql="insert into ..." orm框架 操作对象即操作表 session.save(salry); //提交事务 session.getTransaction().commit(); //关闭session session.close(); //关闭session工厂 sessionFactory.close(); }
一:批量增加
先配置,在配置文件配置如30
<property name="hibernate.jdbc.batch_size">30</property>
public static void main(String[] args) { //解析配置文件 Configuration cfg=new Configuration(); cfg.configure(); //创建sessionFactory SessionFactory sessionFactory=cfg.buildSessionFactory(); //从sessionFactory中获取session Session session=sessionFactory.openSession(); //开启事务 session.beginTransaction(); //持久化操作 for(int i=31;i<=100;i++) { Salary salary=new Salary(); salary.setWorkcode((long)i); salary.setUname("淘宝宝"+i); salary.setDept("软件开发部"+i); //float F double d salary.setBase_salary(10000d); //int short long L 整型 salary.setExtract(2000d); salary.setLeav(5000d); salary.setSick(7000d); salary.setPk(1400d); session.save(salary); if(i%30==0)//和配置文件的30保持一致 { session.flush(); session.clear(); } } //提交事务 session.getTransaction().commit(); //关闭session session.close(); //关闭sessionFactory sessionFactory.close(); }
二,删除
public static void main(String[] args) { //配置文件的解析类 Configuration cfg=new Configuration(); //解析配置文件 cfg.configure(); //获取连接的session工厂 SessionFactory sessionFactory = cfg.buildSessionFactory(); //从工厂获取一个连接的session Session session = sessionFactory.openSession(); //开启事务 session.beginTransaction(); //删除之前先查询有2种方法 //1先查询再删除,注意类型转换9L long的类型为后缀l // Salary salary1 = (Salary)session.get(Salary.class, 9l); //2定义一个有主键的对象 Salary salary2=new Salary(); salary2.setWorkcode(30l); session.delete(salary2); //session.delete(salary1); //提交事务 session.getTransaction().commit(); //关闭session session.close(); //关闭session工厂 sessionFactory.close(); }
三 ,查看
public static void main(String[] args) { //解析配置文件的类 Configuration cfg=new Configuration(); //解析配置文件 cfg.configure(); //创建session工厂 SessionFactory sessionFactory = cfg.buildSessionFactory(); //从session工厂获取一个session Session session = sessionFactory.openSession(); //开区事务 session.beginTransaction(); //原则 类即表 属性即字段 不允许出现 * hql 用别名代替* 如select s from Salary s; //查询所有 指定类型 持久化操作 HQL语法 mysql oracle sql语法 // Query query = session.createQuery("select s from Salary s"); //查询所有的语法select s from Salary s ,from Salary /*Query query = session.createQuery("from Salary"); List<Salary> list = query.list(); for(Salary s:list){ System.out.println(s); }*/ //单列 是Object类型 //query 查询分析器 /*Query query = session.createQuery("select s.uname from Salary s"); List<Object> list = query.list(); for(Object s:list){ System.out.println(s); }*/ //查询多列 Query query = session.createQuery("select s.uname,s.dept,s.base_salary from Salary s"); List<Object[]> list = query.list(); for(Object[] s:list){ // System.out.println(s); for(Object ss:s){ System.out.println(ss); } } session.getTransaction().commit(); session.close(); sessionFactory.close(); }
四:改
public static void main(String[] args) { Configuration cfg=new Configuration(); cfg.configure(); SessionFactory sessionFactory = cfg.buildSessionFactory(); Session session = sessionFactory.openSession(); session.beginTransaction(); //修改之前先查询 Salary salary=(Salary)session.get(Salary.class,9l); salary.setBase_salary(666d); salary.setExtract(666d); session.update(salary); session.getTransaction().commit(); session.close(); sessionFactory.close(); }
五 分页
public static void main(String[] args) { Configuration cfg=new Configuration(); cfg.configure(); SessionFactory sessionFactory = cfg.buildSessionFactory(); Session session = sessionFactory.openSession(); session.beginTransaction(); Query query = session.createQuery("from Salary"); //持久化操作 //limit 0 10 0-10条数据 //limit 10 10 11-20 query.setFirstResult(0);//从第几条数据开始 query.setMaxResults(3);//这条数据开始拿几条数据 数据不会变 List<Salary> list = query.list();//获取所有的数据 for(Salary salary:list){ System.out.println(salary); } session.getTransaction().commit(); session.close(); sessionFactory.close(); }
六,把log4j.properties放在hibernate.cfg.xml的同级目录
我们都希望看一下 hibernate的执行过程 所以我们需要引入 hibernate的日志
需要引入 slf4j-log4j.jar这个jar包下载地址:http://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12/1.6.1
log4j.jar 这个jar包下载地址:http://mvnrepository.com/artifact/log4j/log4j/1.2.11
还需要找到project/etc/log4j.properties 日志文件 引入到我们项目中
这样就可以看到日志
除此之外我们还需要看到我们在执行过程中生成的SQL语句
所以我们需要在核心配置 hibernate.cfg.xml
<property name="hibernate.format_sql">true</property> <!--将sql语句做格式化的处理-->