Hibernate项目完整流程

(1)准备开发环境,创建Hibernate项目。
开发环境:eclipse+hibernate tools插件+hibernate各种jar包+mysql和mysql驱动;
eclipse在线安装hibernate tools插件,下载hibernate压缩包解压。
创建动态web项目,将mysql-connector-java-xxx复制到WEB-INF/lib下在build path一下。

怎么将hibernate里的jar包添加进项目
window->preferences

在这里插入图片描述

java->build path->user libraries
在这里插入图片描述
点击new,输入名字,点击ok
在这里插入图片描述

选择新建的lib点击右侧add external jar

选择hibernate lib文件夹里所有的jar
在这里插入图片描述
ok;
(2)在数据库中创建数据库表。

create table user(
id int(11),
name varchar(20),
password varchar(12),
type varchar(6),
primary key(id)
);

项目的结构如下
在这里插入图片描述
在这里插入图片描述

(3)创建持久化类。

package org.hibernate.entity;
import java.io.Serializable;
public class User implements Serializable{
	private int id;
	private String name;
	private String password;
	private String type;
	public User(){
	}
	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 String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
}

(4)编写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 Dec 12, 2018 3:27:23 PM by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
 <class name="org.hibernate.entity.User" table="user">
  <id name="id" type="int">
   <column name="id"/>
   <generator class="assigned"/>
  </id>
  <property generated="never" lazy="false" name="name" type="java.lang.String">
   <column name="name"/>
  </property>
  <property generated="never" lazy="false" name="password" type="java.lang.String">
   <column name="password"/>
  </property>
  <property generated="never" lazy="false" name="type" type="java.lang.String">
   <column name="type"/>
  </property>
 </class>
</hibernate-mapping>

(5)创建Hibernate的配置文件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 name="">
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.password">********</property>
  <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/hibernate</property>
  <property name="hibernate.connection.username">root</property>
  <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  <property name="hibernate.show_sql">true</property>
  <property name="connection.pool_size">1</property>
  <mapping resource="org/hibernate/entity/User.hbm.xml"/>
 </session-factory>
</hibernate-configuration>

(6)编写辅助工具类HibernateUtils,用来实现对hibernate的初始化并提供获得session的方法。

package org.hibernate.entity;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
	private static SessionFactory sessionFactory;
	private static final ThreadLocal<Session>threadLocal=new ThreadLocal<Session>();
	static {
			Configuration cfg=new Configuration();
			cfg.configure();
			sessionFactory=cfg.buildSessionFactory();
	}
	public static SessionFactory getSessionFactory() {
		return sessionFactory;
	}
	public static Session getSession()throws HibernateException{
		Session session=(Session)threadLocal.get();
		if(session==null||!session.isOpen()) {
			if(sessionFactory==null) {
				rebuildSessionFactory();
			}
			session=(sessionFactory!=null)?sessionFactory.openSession():null;
			threadLocal.set(session);
		}
		return session;
	}
	public static void closeSession()throws HibernateException{
		Session session=(Session)threadLocal.get();
		threadLocal.set(null);
		if(session!=null) {
			session.close();
		}
	}
	public static void rebuildSessionFactory() {
		try {
			sessionFactory=new Configuration().configure("/hibernate.cfg.xml").buildSessionFactory();
		}catch(Exception e) {
			System.err.println("Error Creating SessionFactory");
			e.printStackTrace();
		}
				
	}
	public static void shutdown() {
		getSessionFactory().close();
	}
}

(7)编写DAO层类。

package org.hibernate.dao;

import org.hibernate.entity.User;

public interface UserDAO {
	void save(User user);
	User findByID(int id);
	void delete(User user);
	void update(User user);

}

(8)编写Service层类

package org.hibernate.dao;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.entity.HibernateUtil;
import org.hibernate.entity.User;

public class UserDAOImpl implements UserDAO {

	@Override
	public void save(User user) {
		Session session=HibernateUtil.getSession();
		Transaction tx=session.beginTransaction();
		try {
			session.save(user);
			tx.commit();
		}catch(Exception e) {
			e.printStackTrace();
			tx.rollback();
		}finally {
			HibernateUtil.closeSession();
		}

	}

	@Override
	public User findByID(int id) {
		User user=null;
		Session session=HibernateUtil.getSession();
		Transaction tx=session.beginTransaction();
		try {
			user=(User)session.get(User.class, user);
			tx.commit();
		}catch(Exception e) {
			e.printStackTrace();
			tx.rollback();
		}finally {
			HibernateUtil.closeSession();
		}
		return user;
	}

	@Override
	public void delete(User user) {
		Session session=HibernateUtil.getSession();
		Transaction tx=session.beginTransaction();
		try {
			session.delete(user);
			tx.commit();
		}catch(Exception e) {
			e.printStackTrace();
			tx.rollback();
		}finally {
			HibernateUtil.closeSession();
		}

	}

	@Override
	public void update(User user) {
		Session session=HibernateUtil.getSession();
		Transaction tx=session.beginTransaction();
		try {
			session.update(user);
			tx.commit();
		}catch(Exception e) {
			e.printStackTrace();
			tx.rollback();
		}finally {
			HibernateUtil.closeSession();
		}
	}

}

(9)编写测试类

package org.hibernate.test;

import static org.junit.Assert.*;

import org.hibernate.dao.UserDAO;
import org.hibernate.dao.UserDAOImpl;
import org.hibernate.entity.User;
import org.junit.Test;
public class UserTest {
	@Test
	public void testSave() {
		UserDAO userdao=new UserDAOImpl();
		try {
			User u=new User();
			u.setId(1);
			u.setName("yazhou");
			u.setPassword("111");
			u.setType("admin");
			userdao.save(u);
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
}

(10)执行测试方法。右键测试类,run as JUnit Test
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值