初识hibernate——环境搭建

一  配置过程

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.项目结构:

  

三  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的程序开发使用者众多,促使产品有稳定的发展保证。

 

 

  

  

时间: 2024-10-27 11:42:17

初识hibernate——环境搭建的相关文章

Hibernate学习之——Hibernate环境搭建

之前在写关于安卓闹钟的教程,写了一半就没后一半了,其实自己也没做好,在校外实习,校内毕业实习又有任务,只能先放放了,等毕业实习结束之后,在继续安卓闹钟开发之旅,相信这个时间不会很久的.现在毕业实习用到的SSH框架(Struts+Spring+Hibernate),自己没有多少时间去好好学习,但是还是想把学到的东西记录下来. 一.Hibernate简介 1.什么是Hibernate? Hibernate是数据持久层的一个轻量级框架.数据持久层的框架有很多比如:iBATIS,myBatis,Nhib

hibernate环境搭建及配置文件

首先要下载好hibernate文件包 然后新建项目: 1.导入jar包(打开下载好的文件包,找到lib文件下的required文件包,里面有jar包) 注意:初学者可以暂时copy一下代码. 2.新建一个class文件,内容如下: public class Person { //类的属性 private Integer id; private String name; private String password; private Date birthday; //无参构造函数 public

Hibernate环境搭建超详细

前言 环境搭建其实可以简单到导入相关jar包即可. 但是对于学习来说,这个环境搭建的内容还是挺多的,目的是提供一个让我们如何快速学习和掌握类库的学习环境.作为程序猿,学习和使用类库是必须掌握的技能.如何快速的学习和使用类库,这里有很多经验和技巧.比方说参照官方文档中教程.api.在ide中加入如javadoc支持等等. 官方文档是我们学习一个类库中最重要的手段和途径,书籍.博客教程的作者都是根据官方文档来学习这些类库的.官方文档提供了最新的.系统的.最准确的学习资料.虽然这些文档有很多都是英文的

Hibernate环境搭建+struts整合

说明:本文档,是和struts2+hibernate的整合示例. lib下还有struts2的jar包,本示例没有显示.struts2的搭建参考struts2的环境搭建 一下载hibernate的jar包,并将相关jar包导入的项目web-inf的lib下 二:配置hibernate.cfg.xml文档 1 <!DOCTYPE hibernate-configuration PUBLIC 2 "-//Hibernate/Hibernate Configuration DTD 3.0//EN

hibernate环境搭建

持久化概念: 持久化就是把数据(如内存中的对象)同步保存到数据库或某些存储设备中(如磁盘文件中.XML数据文件中)等等. 在软件的分层体系结构中,持久化层是与数据库打交道的逻辑层. JDBC-的问题: 代码繁琐: 一个插入对象的例子 public void addAccount(final Account account) throws DAOException,AccountAlreadyExistException{ final Connection conn=getConnection()

springmvc+spring-data-jpa+hibernate环境搭建与配置

1.JPA诞生的缘由是为了整合第三方ORM框架,建立一种标准的方式,百度百科说是JDK为了实现ORM的天下归一,目前也是在按照这个方向发展,但是还没能完全实现.在ORM框架中,Hibernate是一支很大的部队,使用很广泛,也很方便,能力也很强,同时Hibernate也是和JPA整合的比较良好,我们可以认为JPA是标准,事实上也是,JPA几乎都是接口,实现都是Hibernate在做,宏观上面看,在JPA的统一之下Hibernate很良好的运行. 2.使用springmvc+spring-data

Spring+Springmvc+Hibernate环境搭建与配置

这里给出JavaWeb项目Spring+Springmvc+Hibernate框架环境的搭建与配置,方便以后快速创建项目.下面是以本人的一个项目为例给出的配置,不同项目具体的结构都是可以按一下结构完成的,至于配置内容则需要按照具体的项目需求更改部分内容.需要注意的是,本项目是以使用注解为前提完成的项目. 一.项目目录 首先说明一下,本项目是maven项目,采用Spring+Springmvc+Hibernate的框架,前端模板引擎采用thymeleaf,html代码存放在下面结构的templat

spring+hibernate环境搭建

整体项目结构如图: src各个包是按照springMVC建立包格式建立的,如下图: entity层的代码:有Book.java 和 Account.java package com.elgin.spring.hibernate.entity; public class Book { private int id; private String bookName; private String isbn; private float price; private int stock; public

Struts2+Spring+Hibernate环境搭建

struts-2.3.20 spring-4.1.4 hibernate-4.3.8 slf4j-1.7.10 1.在MySQL中建立数据库 mysql> create database myoa default character set utf8 2.在MyEclipse中建立Web Project 在项目上右键-Properties,设置编码为UTF-8. 3.配置Struts2 拷贝jar包(依照示例,另aopalliance.jar). 在web.xml中写入Struts Filter