第一个Hibernate程序

本文介绍Hibernate的基本概念及如何使用它来进行数据库操作。包括环境搭建、实体类定义、映射文件配置、基本CRUD操作等。

首先介绍一下hibernate:hibernate对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。(来自百度百科)

step1,创建数据库,该步骤也可以通过java的建表工具类来执行,不过需要先写好实体类和相关的映射

 SchemaExport export=new SchemaExport(configuration);
        export.create(true, true);
step2,导入所需要的jar包。

step3,配置hibernate.cfg.xml



<!-- 打印该拼装后的sql语句,方便调试 -->
	<property name="hibernate.show_sql">true</property>

step4,利用Hibernate的第三方工具或Eclipse的有关插件从数据库中创建出相应的实体对象及其ORM映射文件。xxx.hbm.xml

step5,创建Hibernate的SessionFactory类。

step6,通过SessionFactory创建Session实例。

step7,通过创建的Session实例进行持久化对象的管理。

step8,通过创建的Transaction实例进行事务管理。

step9,通过创建的Query或Criteria实例实现数据库的查询。

我写的第一个hibernate程序:

一:

public class User {
	private Integer id;
	private String loginName;
	private String password;
	private String name;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getLoginName() {
		return loginName;
	}

	public void setLoginName(String loginName) {
		this.loginName = loginName;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}
二: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 package="com.pojo.User">

  <class name="User" table="e_user" lazy="true">
  <id name="id">
       <generator class="native"></generator>
  </id>
  <property name="loginName"></property>
  <property name="password"></property>
  <property name="name"></property>  
  </class>
</hibernate-mapping>

三:Hibernate.Utils

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

public class HibernateUtils {
   private static Configuration conf;
   private static SessionFactory factory;
   static{
	   //conf对象只要加载一次就好,
	   //如果放入到openSession中会影响效率
	   conf=new Configuration();
	   conf.configure();
	   factory=conf.buildSessionFactory();
   }
   public static Session openSession(){
	   return factory.openSession();
   }
}

四:完成了增删改查功能

import java.io.File;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import com.pojo.User.User;
import com.pojo.Util.HibernateUtils;

public class TestHibernate {
	
	public void test() {
		User user = new User();
		user.setLoginName("nihao");
		user.setName("xiaoe");
		user.setPassword("900529");
		// 调用hibernate的api,用于装载hibernate
		Configuration conf = new Configuration();
		// 类路径中装载默认的配置文件hibernate.cfg.xml
		conf.configure();
		// 创建装载的指定文件
		// conf.configure(new File("abc.xml"));
		// 创建SessionFactory
		SessionFactory factory = conf.buildSessionFactory();
		Session session = factory.openSession();
		// 或得事务
		Transaction tx = session.getTransaction();
		// 开启事务
		tx.begin();
		session.save(user);
		tx.commit();
		session.close();

	}
   
	public void tst2(){
	  Session session=null;
	  try{
		 session = HibernateUtils.openSession();
		//emp empp = (emp) session.get(emp.class, 1);
		//System.out.println(empp.getEmpno() + "," + empp.getBonus() + ","
		User user=new User();
		user.setId(1);
		
		// 开启事务,完成了删除功能
		Transaction tx=session.beginTransaction();
		session.delete(user);
		tx.commit();
		session.close();
	  }catch(Exception e){
		  e.printStackTrace();
	  }
	  
  }
    
    public void tst3(){
    	Session session=null;
    	try{
    		//完成了修改功能
    		session=HibernateUtils.openSession();
    		User user=new User();
    		user.setId(2);
    		user.setLoginName("122");
    		user.setName("taotao");
    		user.setPassword("9005296666");
    		Transaction tx=session.beginTransaction();
    		session.saveOrUpdate(user);
    		tx.commit();
    		session.close();
    	}catch(Exception e){
  		  e.printStackTrace();
  	  }
    }
    @Test
    public void select(){
    	Session session=null;
    	try{
    		//select
    		session=HibernateUtils.openSession();
    		//User user=(User)session.get(User.class, 2);
    		//System.out.println(user.getLoginName()+","+user.getPassword());
    		//HQL---Hibernate 提供的面向对象的查询语句
    		Query query=session.createQuery("from User");
    		List<User> userList=query.list();
    		for(User user:userList){
    			System.out.println(user.getId()+","
    			+user.getName()+","
    			+user.getLoginName()+","
    			+user.getPassword());
    		}
    	}catch(Exception e){
    		e.printStackTrace();
    	}
    }
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值