4.18 快速入门
4_18

快速入门
第一步:拷贝jar
-- lib\required\所有jar包
-- lib\jpa\所有jar包
-- lib\optional\c3p0\所有jar包
-- mysql驱动
第二步:写全局的配置文件.
src/hibernate.cfg.xml
cfg: configuration
第三步:写持久化类(普通的javaBean + jpa注解)
第四步:hibernate编程
-- Configuration
-- SessionFactory
-- Session
-- Transaction
环境搭建(基于annotation方式)
写测试类
开发步骤:
1.创建Configuration配置信息对象
2.创建SessionFactory
3.获取Session
4.开启事务Transaction
5.调用Session的方法完成所有的持久化操作
6.事务提交commit()或回滚rollback()
7.关闭Session与SessionFactory
PersonTest类
package com.yayadou.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import com.yayadou.domain.Person;
/**
* PersonTest
*/
public class PersonTest {
public static void main(String[] args) throws Exception {
/** 第一步:创建Configuration */
Configuration configuration = new Configuration() // 默认加载hibernate.properties属性文件
.configure(); // 默认加载hibernate.cfg.xml文件
/** 第二步:创建注册服务对象 */
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties()).build();
/** 第三步:创建SessionFactory */
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
/** 第四步:获取Session */
Session session = sessionFactory.openSession();
/** 第五步:开启事务,获取事务对象 */
Transaction transaction = session.beginTransaction();
/** 第六步:调用Session的方法完成所有的持久化操作 */
Person p = new Person();
p.setId(1);
p.setAge(20);
p.setName("hanfeili");
// 将对象p保存到数据库表中
session.save(p);
/** 第七步:事务提交commit()或回滚rollback() */
transaction.commit();
/** 第八步:关闭Session与SessionFactory */
session.close();
sessionFactory.close();
}
}
写持久化的类
持久化类 = pojo + xxx.hbm.xml.(旧的方式)
持久化类 = pojo + annotation注解. (@Entity)
普通的pojo + annotation注解
pojo: Plain Old Java Object 最简单最传统的java对象.
写pojo类时要注意下面四点:
-- 必须有一个无参的构造器.
-- 所有的属性必须有setter与getter方法.
-- 所有的属性不能用final修饰.
-- 必须有一个唯一的标识属性. @Id (生成表中的主键列).
annotation注解:
-- @Entity
-- @Id
Person类
package com.yayadou.domain;
import javax.persistence.Entity;
import javax.persistence.Id;
/**
* Person
*/
@Entity
public class Person {
@Id
private Integer id;
private String name;
private int age;
public Person(){
}
/** setter and getter method */
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Hibernate核心API说明
Configuration
Configuration: 专门负责加载全局的配置文件,产生SessionFactory。
创建Configuration对象代码如下:
Configuration cfg = new Configuration() // 默认加载src目录下hibernate.properties属性文件
.configure(); // 默认加载src目录下hibernate.cfg.xml配置文件
SessionFactory
SessionFactory:它是当前数据库在内存中镜像。一个SessionFactory对应一个数据库,所以一个Web应用只需要一个SessionFactory即可,
当Web应用启动时就获取SessionFactory,当Web应用关闭时才关闭SessionFactory.
-- 它是线程安全的.
-- 它是创建Session的工厂.
-- 它底层封装了数据源(连接池).
-- 它有一个可选的二级缓存.(默认是关闭的).
调用代码:
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
Session(会话)
Session: 它是应用程序与持久层进行交互的单线程对象。
-- 它是线程不安全。
-- 它存活的时间比较短.(因为它底层封装得是Connection,用完就要关闭).
-- 它是事务工厂.
-- 有一个必须开启的一级缓存. (一级缓存永远都是开启的).
Session : 会话(持续的一段有效的时间).
HttpSession: 浏览器打开到浏览器关闭.
SqlSession: 数据库连接的获取到数据库连接的关闭.
Session: 数据库连接的获取到数据库连接的关闭.
调用代码
Session session = sessionFactory.openSession();
Transaction(事务)
Transaction: Hibernate事务对象.
-- JDBC事务(局部事务): 只能对一个数据库中的表做事务. (web容器) tomcat jetty
-- JTA事务(全局事务、分布式事务): 可以对多个数据库中的表做事务.(EJB容器)
WebSphere(IBM)、WebLogic(Oracle)、JBoss(jboss)
调用代码:
Transaction tx = session.beginTransaction();
增、删、改
tx.commit();
注:使用Hibernate进行操作时(增、删、改)必须显示的调用Transaction(默认:autoCommit=false)。
ConnectionProvider
ConnectionProvider: 数据库连接的提供者,一般指得是数据源DataSource(连接池).
浙公网安备 33010602011771号