Hibernate开发基本步骤

Hibernate开发基本步骤:

1.编写配置文档hibernate.cfg.xml

2.创建实体类

3.生成对应实体类的映射文件并添加到配置文档中

4.调用Hibernate API进行测试

准备条件:

1.安装好Hibernate插件

2.准备hibernate, junit4, mysql驱动等相关开发包, 并将其导入项目中

___________________________________________________________________

下面以一个Hibernate小项目进行示范

1.  在项目src目录下新建配置文档 hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.password">joey</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/study?characterEncoding=UTF-8</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		
		<property name="show_sql">true</property>
		<property name="format_sql">true</property>
		<property name="hibernate.default_schema">study</property>
		<property name="hbm2ddl.auto">update</property>
		
		
		<!-- getCurrentSession需要的配置 -->
		<property name="hibernate.current_session_context_class">thread</property>
	<!-- <property name="hibernate.current_session_context_class">jta</property> -->
		
		<!-- 第3步添加的映射文件 -->
		<mapping resource="entity/Student.hbm.xml"/>
	</session-factory>
</hibernate-configuration>
2.  创建实体类  Student.class
package entity;

import java.util.Date;

// 学生类
public class Student {

	/*
	 * 实体类设计原则: 
	 * 1.公有的类 
	 * 2.提供公共的,不带参数的默认的构造方法 
	 * 3.属性私有 
	 * 4.属性setter/getter封装
	 */

	private int sid; // 学号
	private String sname; // 姓名
	private String gender; // 性别
	private Date brithday; // 生日
	private String address; // 地址
	
	
	public Student() {
		super();
	}

	public Student(int sid, String sname, String gender, Date brithday, String address) {
//		super();
		this.sid = sid;
		this.sname = sname;
		this.gender = gender;
		this.brithday = brithday;
		this.address = address;
	}

	public int getSid() {
		return sid;
	}

	public void setSid(int sid) {
		this.sid = sid;
	}

	public String getSname() {
		return sname;
	}

	public void setSname(String sname) {
		this.sname = sname;
	}

	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}

	public Date getBrithday() {
		return brithday;
	}

	public void setBrithday(Date brithday) {
		this.brithday = brithday;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	@Override
	public String toString() {
		return "Student [sid=" + sid + ", sname=" + sname + ", gender=" + gender + ", brithday=" + brithday
				+ ", address=" + address + "]";
	}
}
3.  利用插件快速生成对应的映射文件, 并将其添加到 hibernate.cfg.xml 配置文档

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-11-6 9:32:18 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
    <class name="entity.Student" table="STUDENT">
        <id name="sid" type="int">
            <column name="SID" />
            <!-- 主键生成策略 -->
           <!--  <generator class="assigned" /> --><!-- 由java应用程序负责生成(手工赋值) -->
            <generator class="native" />
                    
        </id>
        <property name="sname" type="java.lang.String">
            <column name="SNAME" />
        </property>
        <property name="gender" type="java.lang.String">
            <column name="GENDER" />
        </property>
        <property name="brithday" type="java.util.Date">
            <column name="BRITHDAY" />
        </property>
        <property name="address" type="java.lang.String">
            <column name="ADDRESS" />
        </property>
    </class>
</hibernate-mapping>
4.  写一个类进行功能测试
package test;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.jdbc.Work;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

/*
 * Student测试类
 * 
 * 两种方式进行数据库操作:
 * 一.开启事务
 * 二.不开启事务,使用自动提交
 * 
 * 区别
 * 开启事务需要transaction = session.beginTransaction();
 * 并以transaction.commit提交事务
 * 
 * 不开启事务则需要doWork设置自动提交模式
 * 并在保存操作后调用flush()
 */

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import entity.Student;

public class StudentTest {

	private SessionFactory sessionFactory;
	private Session session;
	private Transaction transaction;
	
	/* 如何获得Session对象
	 * 1.openSession
	 * 2.getCurrentSession
	 * 使用getCurrentSession需要在hibernate.cfg.xml中进行配置
	 * 如果是本地事务(jdbc事务)
	 * <property name="hibernate.current_session_context_class">thread</property>
	 * 如果是全局事务(jta事务)
	 * <property name="hibernate.current_session_context_class">jta</property>
	 * 
	 */

	@Before
	public void init() {

		// 创建配置对象
		Configuration configuration = new Configuration().configure();
		// 创建服务注册对象
		ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties())
				.buildServiceRegistry();
		// 创建会话工厂对象
		sessionFactory = configuration.buildSessionFactory(serviceRegistry);
		// 会话对象
		session = sessionFactory.openSession();
		// 开启事务
		transaction = session.beginTransaction();
	}

	@After
	public void destory() {

		transaction.commit();// 提交事务
		session.close();// 关闭session
		sessionFactory.close();// 关闭sessionFactory
	}

	@Test
	public void testSaveStudent() {
		// 创建学生对象
		Student student = new Student(1, "小明", "男", new Date(), "火星");

		// 当不使用开启事务方式来执行数据操作时,需要调用doWork方法设置自动提交模式
		/*session.doWork(new Work() {

			@Override
			public void execute(Connection connection) throws SQLException {
				connection.setAutoCommit(true);// 自动提交模式
			}
		});*/

		session.save(student);// 将学生对象保存到数据库

		//session.flush();// 自动提交模式下需要调用此方法,否则session不会执行
	}
}
执行testSaveStudent()后查看数据库

hibernate学习过程遇到一个比较麻烦报错信息

java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.setBinaryStream


已经解决,有时间整理到博客中来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值