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(连接池).

posted on 2018-01-31 18:45  東風★破  阅读(125)  评论(0)    收藏  举报

导航