标签:过多 strong standard 释放 and localhost 对象 cfg.xml 持久化
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;
}
@Override
public 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 {
@Test
public void test(){
//1. 加载配置文件, 创建配置对象
/**
* 默认情况下, 如果configure方法调用的是无参的, 则会加载SRC文件夹下的名字为hibernate.cfg.xml的配置文件
* 如果配置文件名不是hibernate.cfg.xml, 那么可以在configure方法中指定配置文件
*/
Configuration configuration = new Configuration().configure("hibernate.cfg.xml");
//2. 创建SessionFactory
ServiceRegistry 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;
}
@Override
public 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 {
@Test
public void test(){
//1. 加载配置文件, 创建配置对象
/**
* 默认情况下, 如果configure方法调用的是无参的, 则会加载SRC文件夹下的名字为hibernate.cfg.xml的配置文件
* 如果配置文件名不是hibernate.cfg.xml, 那么可以在configure方法中指定配置文件
*/
Configuration configuration = new Configuration().configure("hibernate.cfg.xml");
//2. 创建SessionFactory
ServiceRegistry 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的user
System.out.println(user);
user.setAge(21);
System.out.println(user);
// 提交事务
session.getTransaction().commit();
//5. 关闭对象
session.close();
sessionFactory.close();
}
}
7.项目结构:

l 创建hibernate配置,读取Hibernate配置文件及信息
l 用读取的配置信息生成SessionFactory对象
l 从SessionFactory对象获取 一个Session对象
l 用Session对象生成事务
l 通过Session对象的方法进行操作
l 提交或回滚事务
l 释放session and session factory资源
(1)首先是开源和免费的License,方便功能定制,需要时可以查看源码或者修改源码。
(2)其次它是一个轻量级封装框架,避免引入过多复杂代码,减轻程序员调试负担。
(3)再次它是一个有可扩展性、API开放的框架,可以在功能不够用时进行其功能的扩展。
(4)最后就是Hibernate的程序开发使用者众多,促使产品有稳定的发展保证。
标签:过多 strong standard 释放 and localhost 对象 cfg.xml 持久化
原文地址:http://www.cnblogs.com/mlan/p/7827588.html