第一个hibernate程序

 hibernate是一个独立于web的框架,想一下我们使用的数据库如mysql,sqlserver,oracle,这些数据库处理的都是关系模型,我们使用jdbc来把数据存入数据库,java程序使用的是对象模型,数据库使用的是关系模型。这就产生了一个问题,这个问题有个书面名称叫做“阻抗不匹配”,也是用于这些原因之后出现了hibernate,toplink之类的框架。在实际应用中hibernate是使用做多的一个框架,只要学习了这个框架你就可以体会他的独特魅力。

1.下载hibernate开发包,这个包在jboss的网站上http://sourceforge.net/projects/hibernate/files/hibernate3/3.6.7.Final/可以下载到,下载的地方藏得比较隐蔽,注意找就可以了,之后把要用到的包全部拷贝到lib下面,如果不嫌多就全部拷贝进去。

2.找到hibernate的资源文件,里面有我们要用到的一些配置。来看下这个文件的位置

 

打开之后我们可以看到许多配置信息,这里我选择mysql来做开发,需要的配置如下

把这些配置复制到hibernate的配置文件中就OK了,现在来写下这个配置文件名称为hibernatecfg.cfg.xml

<!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="foo">
		<property name="show_sql">true</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql:///mldn</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">123456</property>
		<property name="hibernate.hbm2ddl.auto">update</property>
        <mapping resource="hbm/User.hbm.xml"/>
		
	</session-factory>
</hibernate-configuration>

 


上面的配置只适合hibernate3或者以下的版本,如果是hibernate4的话还需要一个hibernate.properties文件,该文件内容如下

hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver
hibernate.connection.url=jdbc:oracle:thin:@127.0.0.1:1521:BEDSIDE
hibernate.connection.username=chenruiyin
hibernate.connection.password=chenruiyin


 

 

配置文件写好了,现在来写个vo类,如下所示

package org.lxh.vo;

public class User {
	private int id;
	private String username;
	private String password;

	public int getId() {
		return id;
	}

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

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

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

}

这些都弄好了,现在可以写映射文件了,命名规则是xxx.hbm.xml,如下所示

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.hibernate.test.annotations">

    <class name="org.lxh.vo.User" table="user">

        <id name="id" column="id">
            <generator class="increment"/>
        </id>

        <property name="username" column="username"/>
        <property name="password" column="password"/>
       
        
    </class> 

</hibernate-mapping>


一切工作都准备就绪了,现在就来写个工具类,之后生成一个表

package org.lxh.util;

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

public final class HibernateUtil {
	

	private static SessionFactory sf = null;

	private HibernateUtil() {
	}

	static {
		sf = new Configuration().configure().buildSessionFactory();
	}
	public static SessionFactory getSf() {
		return sf;
	}
	public static Session getSession() {
		return sf.openSession();
	}
	
}

同样的hibernate4的话工具类也要做一些小的调整,加2句代码就OK了

static {
		ServiceRegistryBuilder regist=new ServiceRegistryBuilder();
		sf = new Configuration().configure().buildSessionFactory(regist.buildServiceRegistry());
	}


 

最后来写个JUNIT测试一下,看下运行效果。

package test;


import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.BeforeClass;
import org.lxh.util.HibernateUtil;
import org.lxh.vo.User;

public class Test {

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}
	@org.junit.Test public void cascadeBook() {

		Session ses=null;
		Transaction tr=null;
		
		
		try{
			
			ses=HibernateUtil.getSession();   //取得session
			
			tr=ses.beginTransaction();
			
			User user=new User();
			user.setUsername("chenwill4");
			user.setPassword("123456");
			ses.save(user);     //把数据插入数据库
			//ses.persist(user);
			tr.commit();
		
		}catch(HibernateException e){
			throw e;
		}finally{
			if(ses!=null)
			{
				ses.close();
			}
			
		}
		
	}
}



到这里代码就写好了,如果有问题可以一起交流,联系方式就不用说了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值