一 配置过程
1. 创建一个项目
2. 导包
required里的包
optional里的c3p0连接池的三个包
数据库驱动包
Junit
3.创建Hibernate的配置文件(hibernate.cfg.xml)
4.创建持久化的实体类对象User
5.创建对象与关系型数据库之间的映射(user.hbm.xml或使用注解)
6.通过Hibernate访问数据库
二 示例
配置文件实现:
1.创建项目hibernate-01
2.导入需要的包
3.创建Hibernate的配置文件(hibernate.cfg.xml)
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC ???"-//Hibernate/Hibernate Configuration DTD//EN" ???"http://hibernate.sourceforge.net/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/work</property> ???????<property name="connection.username">root</property> ???????<property name="connection.password">root</property> ???????????????<property name="current_session_context_class">thread</property> ???????<!-- 连接池Jdbc connection pool C3P0--> ???????<property name="connection.pool_size">1</property> ???????<!-- 方言dialect --> ???????<property name="dialect">org.hibernate.dialect.MySQLDialect</property> ???????????????<!-- 是否显示sql语句Echo all executed SQL to stdout --> ???????<property name="show_sql">true</property> ???????<property name="format_sql">true</property><!-- 同步程序与数据库中的表 --><property name="hbm2ddl.auto">update</property> <!-- 映射文件配置,配置文件名必须包含其相对于根的全路径 --><mapping resource="com/jn/pojo/user.hbm.xml"/> ???</session-factory></hibernate-configuration>
4.创建持久化的实体类对象User
package com.jn.pojo;public class User {private int id;private String name;private int age;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 int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", age=" + age + "]";}}
5.创建对象与关系型数据库之间的映射(user.hbm.xml)
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><!-- 配置User类与数据库表user之间的映射关系 --><class name="com.jn.pojo.User" table="user"><!-- 主键的配置需要使用id标签在配置主键时: 实体类中属性名, 实体类中属性的类型指定主键的创建规则 --><id name="id" type="int"><column name="id"></column><generator class="native"></generator></id><!-- 配置普通属性 --><property name="name" type="java.lang.String"><column name="name" ></column></property><property name="age" type="int"><column name="age" ></column></property></class></hibernate-mapping>
6.通过Hibernate访问数据库:测试类MainTest.java
package com.jn.test;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.junit.Test;import com.jn.pojo.User;public class MainTest {@Testpublic void test(){//1. 加载配置文件, 创建配置对象/** * 默认情况下, 如果configure方法调用的是无参的, 则会加载SRC文件夹下的名字为hibernate.cfg.xml的配置文件 * 如果配置文件名不是hibernate.cfg.xml, 那么可以在configure方法中指定配置文件 */Configuration configuration = new Configuration().configure("hibernate.cfg.xml");//2. 创建SessionFactoryServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();SessionFactory sessionFactory = configuration.buildSessionFactory(sr);//3. 获取Session对象/** * sessionFactory.getCurrentSession(), 获取当前线程的Session对象 */Session session = sessionFactory.openSession();//4. 操作数据库// 开启事务session.beginTransaction();// 创建实体类对象User user = new User();user.setName("my");user.setAge(23);// 将实体类对象保存到数据库中/** * save方法会将实体类对象, 保存到数据库的中表中. * 在这个过程中, 代码中不需要写SQL语句, 它的insert语句是由Hibernate根据ORM的关系映射自动创建了 */session.save(user);// 提交事务session.getTransaction().commit();//5. 关闭对象session.close();sessionFactory.close();}}
7.项目结构:
注解实现:
1.创建项目hibernate-02
2.导入需要的包
3.创建Hibernate的配置文件(hibernate.cfg.xml)
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC ???"-//Hibernate/Hibernate Configuration DTD//EN" ???"http://hibernate.sourceforge.net/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/work</property> ???????<property name="connection.username">root</property> ???????<property name="connection.password">root</property> ???????????????<property name="current_session_context_class">thread</property> ???????<!-- 连接池Jdbc connection pool C3P0--> ???????<property name="connection.pool_size">1</property> ???????<!-- 方言dialect --> ???????<property name="dialect">org.hibernate.dialect.MySQLDialect</property> ???????????????<!-- 是否显示sql语句Echo all executed SQL to stdout --> ???????<property name="show_sql">true</property> ???????<property name="format_sql">true</property><!-- 同步程序与数据库中的表 --><property name="hbm2ddl.auto">update</property> <!-- 映射文件配置,配置文件名必须包含其相对于根的全路径 --><mapping class="com.jn.pojo.User"/> ???</session-factory></hibernate-configuration>
4.创建持久化的实体类对象User
package com.jn.pojo;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name="user")public class User {private int id;private String name;private int age;@Id@Column(name="id")@GeneratedValue(strategy=GenerationType.AUTO)public int getId() {return id;}public void setId(int id) {this.id = id;}@Column(nullable=true)public String getName() {return name;}public void setName(String name) {this.name = name;}@Column(nullable=true)public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", age=" + age + "]";}}
5.创建对象与关系型数据库之间的映射(User中注解实现)
6.通过Hibernate访问数据库:测试类MainTest.java
package com.jn.test;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.junit.Test;import com.jn.pojo.User;public class MainTest {@Testpublic void test(){//1. 加载配置文件, 创建配置对象/** * 默认情况下, 如果configure方法调用的是无参的, 则会加载SRC文件夹下的名字为hibernate.cfg.xml的配置文件 * 如果配置文件名不是hibernate.cfg.xml, 那么可以在configure方法中指定配置文件 */Configuration configuration = new Configuration().configure("hibernate.cfg.xml");//2. 创建SessionFactoryServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();SessionFactory sessionFactory = configuration.buildSessionFactory(sr);//3. 获取Session对象/** * sessionFactory.getCurrentSession(), 获取当前线程的Session对象 */Session session = sessionFactory.openSession();//4. 操作数据库// 开启事务session.beginTransaction();User user = (User) session.get(User.class, 1); ?//获取id为1的userSystem.out.println(user);user.setAge(21);System.out.println(user);// 提交事务session.getTransaction().commit();//5. 关闭对象session.close();sessionFactory.close();}}
7.项目结构:
三 Hibernate开发步骤—API应用步骤
l 创建hibernate配置,读取Hibernate配置文件及信息
l 用读取的配置信息生成SessionFactory对象
l 从SessionFactory对象获取 一个Session对象
l 用Session对象生成事务
l 通过Session对象的方法进行操作
l 提交或回滚事务
l 释放session and session factory资源
四 hibernate的优点
(1)首先是开源和免费的License,方便功能定制,需要时可以查看源码或者修改源码。
(2)其次它是一个轻量级封装框架,避免引入过多复杂代码,减轻程序员调试负担。
(3)再次它是一个有可扩展性、API开放的框架,可以在功能不够用时进行其功能的扩展。
(4)最后就是Hibernate的程序开发使用者众多,促使产品有稳定的发展保证。
初识hibernate——环境搭建
原文地址:http://www.cnblogs.com/mlan/p/7827588.html